Benutzer mit den meisten Antworten
Wie wähle ich den passenden Datentyp bei der Erstellung eines Externen Datentyps?

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
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
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
-
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
-
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
-
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 -
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
-
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 -
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
-
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