none
Wie wähle ich den passenden Datentyp bei der Erstellung eines Externen Datentyps? RRS feed

  • Frage

  • Hallo,

    angenommen ich möchte eine SPList mit einer Tabelle in einer SQL Server Datenbank verbinden. Dazu erstelle ich im Sharepoint Designer 2010 einen Externen Datentyp. Demnach werden beispielsweise SQL Datentypen wie folgt auf ListItems abgebildet:

    varchar(255) -> Eine Textzeile

    varchar(1530) -> Mehrere Textzeilen

    Ja/Nein -> bit/boolean

    Zahl -> int

    Anhand dieser Angaben würde ich auch meine SQL-Tabelle anlegen. Doch welche SQL-Datentypen nehme ich wenn meine SPList Datentypen wie beispielsweise:

    - Auswahl

    - Nachschlagen

    - Personen oder Gruppe

    enthalten soll? Reicht es einfach diese Felder als Text also varchar in der SQL-Tabelle anzulegen? Kann ich dann auch bei der Erstellung des Externen Datentyps die ListItems trotzdem auf die oben genannten Datentypen setzen?

    Gruß


    Algorithmen und Datenstrukturen in C#: TechNet Wiki

    Dienstag, 15. April 2014 09:08

Antworten

  • Hi,
    die von Dir genannten SPList Datentypen können nicht als skalare Werte in einer SQL Server Tabelle automatisch abgelegt und wieder gelesen werden. Da musst Du ein Mapping programmieren. Ein Auswahlfeld besteht aus zwei Teilen, der auswählbaren Menge und den konkret ausgewählten Werten, wobei die auswählbare Menge für alle Datensätze identisch ist und damit eine Eigenschaft der Spalte wäre. Ein Nachschlagewert ist ein Fremdschlüssel zu einem unikaten Wert in einer anderen Tabelle. Personen sind User-Objekte, die serialisiert abgelegt werden, wobei die Serialisierung von der Autentifizierungsmethode abhängt.

    Wenn Du solche komplexen Feldtypen mappen willst, dann musst Du das selbst programmieren, entweder als UDT im SQL Server oder durch Serialisierung der Information in einer XML-Spalte im SQL Server.

    --
    Peter

    • Als Antwort vorgeschlagen Alex Pitulice Dienstag, 15. April 2014 10:36
    • Als Antwort markiert -DreDre- Dienstag, 15. April 2014 11:30
    Dienstag, 15. April 2014 09:23

Alle Antworten

  • Hi,
    die von Dir genannten SPList Datentypen können nicht als skalare Werte in einer SQL Server Tabelle automatisch abgelegt und wieder gelesen werden. Da musst Du ein Mapping programmieren. Ein Auswahlfeld besteht aus zwei Teilen, der auswählbaren Menge und den konkret ausgewählten Werten, wobei die auswählbare Menge für alle Datensätze identisch ist und damit eine Eigenschaft der Spalte wäre. Ein Nachschlagewert ist ein Fremdschlüssel zu einem unikaten Wert in einer anderen Tabelle. Personen sind User-Objekte, die serialisiert abgelegt werden, wobei die Serialisierung von der Autentifizierungsmethode abhängt.

    Wenn Du solche komplexen Feldtypen mappen willst, dann musst Du das selbst programmieren, entweder als UDT im SQL Server oder durch Serialisierung der Information in einer XML-Spalte im SQL Server.

    --
    Peter

    • Als Antwort vorgeschlagen Alex Pitulice Dienstag, 15. April 2014 10:36
    • Als Antwort markiert -DreDre- Dienstag, 15. April 2014 11:30
    Dienstag, 15. April 2014 09:23
  • Es müsste doch möglich sein den Spaltentyp im Nachhinein einfach zu ändern. Oder gilt das nur für 'normale' Listen?

    Algorithmen und Datenstrukturen in C#: TechNet Wiki

    Dienstag, 15. April 2014 11:48
  • Hi,
    wie ist die Frage zu verstehen? Was sind 'normale' bzw. 'unnormale' Listen? Welcher Spaltentyp ist gemeint SharePoint-Liste oder Datenbankfeld?

    --
    Peter

    Dienstag, 15. April 2014 12:05
  • Nun wenn ich in der SQL-Tabelle eine Textspalte habe wird diese in der SPList ebenfalls zu Text gemappt.

    Normale Liste --> Eine Benutzerdefinierte Liste die ich über Sharepoint angelegt habe.

    Unnormale Liste --> Eine Liste die entsteht wenn ich einen Externen Datentyp anbinde.

    Für normale Listen kann ich über Listeneinstellungen den Typ der Spalte einfach ändern. Inzwischen meine ich erkannt zu haben, dass das für 'unnormale' Listen nicht möglich ist. Oder sehe ich das falsch?


    Algorithmen und Datenstrukturen in C#: TechNet Wiki

    Dienstag, 15. April 2014 12:35
  • Hi,
    wenn ich es richtig verstanden habe, dann sind bei Dir 'unnormale Listen', SharePoint Listen, die auf einem externen Inhaltstypen basieren. Im externen Inhaltstyp ist das Mapping verankert. Die standardmäßigen Konvertierungsroutinen lassen dort keinen Raum für abweichende Konvertierungen. Da müsstest Du programmatisch herangehen. Wofür benötigst Du abweichende Konvertierungen? Vielleicht gibt es noch andere Wege über berechnete Spalten.

    --
    Peter

    Dienstag, 15. April 2014 13:24
  • Mein Ziel ist es eine bereits bestehende SP-Liste mit einer SQL-Tabelle zu 'verbinden'. Genaueres kannst du hier nachlesen.

    Jetzt hat sich aber herausgestellt, dass diese bereits vorhandene Liste eben Typen enthält die sich nicht 1:1 zu einem SQL-Datentyp mappen lassen.


    Algorithmen und Datenstrukturen in C#: TechNet Wiki

    Dienstag, 15. April 2014 13:46
  • Hi,
    unklar ist, wie Du Dir die Verbindung vorstellst. Die Daten können nur an einem Platz verwaltet werden. Wenn Du eine SharePoint-Liste mit Daten hast, dann ist eine Verbindung zu weiteren Daten im SQL Server sinnlos. Wie sollen die Anwendungen, die auf den SQL Server zugreifen, dann auf die Daten aus dem SharePoint zugreifen?

    --
    Peter

    Dienstag, 15. April 2014 18:15
  • Ich meine die Verbindung zwischen einer Sharepoint-Liste und einem External Content Type (hier SQL server) ist bidirektional, oder nicht?

    Algorithmen und Datenstrukturen in C#: TechNet Wiki

    Mittwoch, 16. April 2014 06:12
  • Hi,
    was verstehst Du unter "bidirektional"? Daten können nur an einen Platz gehalten werden. Verteilte Datenhaltung zum gleichen Sachverhalt ist sehr komplex. Mir ist kein System bekannt, was unterschiedliche Datenhaltungssysteme so anspricht, dass  eine Anwendung nur eine einheitliche Datenquelle ansprechen muss. Solche Szenarien obliegen Anwendungen, die über mehrere unterschiedliche Verbindungen Datenbestände logisch zusammenführen. Verständlich sollte das sofort werden, wenn man nur die Vergabe von Autowerten betrachtet, was nur unter einheitlicher "Führung" möglich ist.

    --
    Peter

    Mittwoch, 16. April 2014 06:23