Autor Beitrag
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 28.04.10 08:57 
Hallo,

aus einer Xml-Datei kann man sehr einfach eine Schema ableiten lassen. Zum einen bietet das VS Pro+ es direkt an zum anderen gibt es Links im Internet. Eine Dritte Lösung ermöglich DataSet, bei der man ein Xml (DataSet.ReadXml) einließt und dann das Schema ausließt (Data.GetXmlSchema). Soweit so gut.

Setzt man einen DataSetName (DataSet.DataSetName = "Test") erhält das Schema-Element ein Attribut ID mit dem DataSetName (<xsd:Schema id="Test" ../>). Beim laden des Schema verhält sich alles Ordnungsgemäß.

Problem:
Mittels CREATE XML SCHEMA COLLECTION speichere ich das Schema in einer DB. Wenn ich nun das Schema aus der Datenbank lade ist das ID Attribut weg und ich hab eine weitere Tabelle mit dem DataSetName. Dies ist natürlich sehr ungeschickt.

Frage:
Kann ich den DataSetName in einer Xml Schema Collection abspeichern ohne das er mir daraus ein weiteres Element macht und aus dem Element später dann eine Tabelle wird?

Wie geht man voran, wenn man die Struktur/Xml Schema in einer DB speichert? Ich "muss" es dort speichern, weil wenn ich die Tabellen aus der DB lade und ins Dataset speichern will ich die Tabellen in einer gewissen Reihenfolge benötigen - ansonsten drehten Primary/Foreign Key Verstöße auf.

Danke & Gruß
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 28.04.10 09:31 
Hallo Daniel,

das ist eigentlich keine Antwort auf deine Frage. Aber ich stolpere über diese Bemerkung:
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
... will ich die Tabellen in einer gewissen Reihenfolge benötigen - ansonsten drehten Primary/Foreign Key Verstöße auf.

Das ist bei jeder DB ein Problem - unabhängig davon, woher die CREATE-Befehle kommen. Ich habe es so gelernt, dass zuerst jede Tabelle mit ihrem PK erzeugt wird; wenn die autoinc-Werte nicht automatisch erstellt werden (wie bei Firebird oder Oracle), dann werden danach alle Trigger o.a. erstellt; erst danach werden die FKs festgelegt.

Unter Umständen werden die FKs vorübergehend deaktiviert; das kann ja auch ADO.NET beim Einlesen von Daten.

Vielleicht hilft dieser Hinweis dennoch.

Gruß Jürgen
danielf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 28.04.10 10:02 
Ah, Danke für den Hinweis.

Es geht dabei weniger um das Create als mehr um das Insert. Deshalb bringt mir vor allem die Möglichkeit Foreign Keys zu deaktivieren etwas :D hier gibt es auch ein Sql-Snippet.

Bin auch am überlegen das Xml Schema nicht in der Xml Schema Collection abzuspeichern sondern als Text in der DB selbst. Das scheint mir die einfachste Lösung zu sein. Will ja nicht bei jedem Insert für jede Tabelle die ganzen ForeignKeys deaktivieren und danach wieder aktivieren (wegen Performance). Dennoch merke ich mir, dass es die Möglichkeit gibt FKs zeitweise zu deaktivieren.