Constrains in DataTable für XML

rabado

Mitglied
Hallo Zusammen,

nachfolgend ein Ausschnitt aus einer XML-Datei, die mehrere Tabellen verwaltet.
Die Tabelle tabNummern soll Nummern verwalten, welche über eine externe Datei in die Tabelle geschrieben werden.
Um zu vermeiden, dass eien nummer mehrfach vorkommt, wurde auf das Feld "NR" ein Primärschlüssel gesetzt.
Leider habe ich das Problem, dass eien Nummer unter VS2008(C#) trotzdem mehrfach angelegt werden kann, was an sich wegen des eindeutigen Schlüssels nicht sein kann.
Code:
          <xs:element name="tabNummern">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Nr" type="xs:int" />
                <xs:element name="bestaetigt" type="xs:boolean" default="false" minOccurs="0" />
                <xs:element name="Echt" type="xs:boolean" default="false" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>

Code:
      <xs:unique name="Constraint1" msdata:PrimaryKey="true">
        <xs:selector xpath=".//tabNummern" />
        <xs:field xpath="Nr" />
      </xs:unique>
    </xs:element>

Die Nummern werden wie folgt eingefügt. try catch lasse ich mal außen vor:

Code:
DataRow r = tab.NewRow();
r["Nr"] = 1;
r["bestaetigt"] = false;
r["Echt"] = true;
tab.Rows.Add(r);

Warum kann ich die Nummer einfügen, obwohl ich einen eindeutigen Schlüssel habe?

Gruß -rabado-
 
Der dritte Code-Abschnitt zeigt die Technik des Einfügens.
Die Zeile mit Nr = 1 ist schon in der Tabelle, und dann kann Sie ein zweites Mal hinzugefügt werden, warum?
 
Wahrscheinlich verwendest du nur eine 'nackte' DataTable. Um dein Problem zu lösen, sollte die DataTable Bestandteil eines DataSets sein, in welchem du auch Constraints und anderes definieren kannst. Dieses DataSet kann dann relativ einfach in eine XML-Datei gespeichert bzw. aus dieser erzeugt werden; die Constraints und die anderen Bestandteile deines DataSets bleiben dann erhalten.
 

Neue Beiträge

Zurück