Autoinrement bei ADO.NET
-
[edit]
-
marcap schrieb:
Hier die XSD:
Du musst die ID-Spalte noch als Primär-Schlüssel definieren!!!
Was für eine Datenbank verwendest Du? MS SQL Express?
-
Wo in der xsd wird bei Dir die ID als Primary deklariert ? Ich sehe es nicht :o(
Bei marcap steht noch ergeänzend:
<xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:inventar_data" /> <xs:field xpath="mstns:ID" /> </xs:unique>
-
Knuddlbaer schrieb:
Wo in der xsd wird bei Dir die ID als Primary deklariert ? Ich sehe es nicht :o(
Ganz unten:
<xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:Test1" /> <xs:field xpath="mstns:ID" /> </xs:unique>
-
Ich verwende eine .mdf vom MS SQL Server 2005 Pro
-
Ah ok,
jetzt springt mir die ID im Block entgegen. Das steht in der xsd von marcap auch drinne.
-
marcap schrieb:
Ich verwende eine .mdf vom MS SQL Server 2005 Pro
Dann definier doch bitte die Spalte "ID" als "Primary Key" und dann erzeuge das DataSet nochmals...
-
Knuddlbaer schrieb:
Das steht in der xsd von marcap auch drinne.
Was steht da drin!? Ich kann nix finden von "Constraint" und "Primary"...
-
Unfairerweise hab ich das komplette Projekt hier liegen. Die Tabelle schaut folgt aus:
<xs:element name="inventarDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="inventarDataSet" msprop:Generator_DataSetName="inventarDataSet"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="inventar_data" msprop:Generator_UserTableName="inventar_data" msprop:Generator_RowDeletedName="inventar_dataRowDeleted" msprop:Generator_RowChangedName="inventar_dataRowChanged" msprop:Generator_RowClassName="inventar_dataRow" msprop:Generator_RowChangingName="inventar_dataRowChanging" msprop:Generator_RowEvArgName="inventar_dataRowChangeEvent" msprop:Generator_RowEvHandlerName="inventar_dataRowChangeEventHandler" msprop:Generator_TableClassName="inventar_dataDataTable" msprop:Generator_TableVarName="tableinventar_data" msprop:Generator_RowDeletingName="inventar_dataRowDeleting" msprop:Generator_TablePropName="inventar_data"> <xs:complexType> <xs:sequence> <xs:element name="ID" msdata:AutoIncrement="true" msprop:Generator_UserColumnName="ID" msprop:Generator_ColumnPropNameInRow="ID" msprop:Generator_ColumnVarNameInTable="columnID" msprop:Generator_ColumnPropNameInTable="IDColumn" type="xs:int" /> <xs:element name="gelöscht" msprop:Generator_UserColumnName="gelöscht" msprop:Generator_ColumnPropNameInRow="gelöscht" msprop:Generator_ColumnVarNameInTable="columngelöscht" msprop:Generator_ColumnPropNameInTable="gelöschtColumn" type="xs:boolean" minOccurs="0" /> <xs:element name="titel" msprop:Generator_UserColumnName="titel" msprop:Generator_ColumnPropNameInRow="titel" msprop:Generator_ColumnVarNameInTable="columntitel" msprop:Generator_ColumnPropNameInTable="titelColumn" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="30" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="kategorie" msprop:Generator_UserColumnName="kategorie" msprop:Generator_ColumnPropNameInRow="kategorie" msprop:Generator_ColumnVarNameInTable="columnkategorie" msprop:Generator_ColumnPropNameInTable="kategorieColumn" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="20" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="verliehen" msprop:Generator_UserColumnName="verliehen" msprop:Generator_ColumnPropNameInRow="verliehen" msprop:Generator_ColumnVarNameInTable="columnverliehen" msprop:Generator_ColumnPropNameInTable="verliehenColumn" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="20" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="ordner" msprop:Generator_UserColumnName="ordner" msprop:Generator_ColumnPropNameInRow="ordner" msprop:Generator_ColumnVarNameInTable="columnordner" msprop:Generator_ColumnPropNameInTable="ordnerColumn" type="xs:int" minOccurs="0" /> <xs:element name="seite" msprop:Generator_UserColumnName="seite" msprop:Generator_ColumnPropNameInRow="seite" msprop:Generator_ColumnVarNameInTable="columnseite" msprop:Generator_ColumnPropNameInTable="seiteColumn" type="xs:int" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:inventar_data" /> <xs:field xpath="mstns:ID" /> </xs:unique> </xs:element>
-
Dann sollte es auch korrekt funktionieren und die ID-Spalte sollte nicht vorhanden sein. Also einfach den "Insert-Befehl" löschen und neu anlegen lassen...
-
Das Problem war die fehlende Einstellung für das AutoIncrement im SQLServer
http://www.rothmichael.de/cpp/Tabelle.png
Marcap hat im DataSet nachträglich das AutoIncrement umgeschaltet, der Wizzard musste also davon ausgehen, das die ID manuell erzeugt wird.