none
Primärschlüssel wird nicht automatisch erzeugt. RRS feed

  • Frage

  • Ich möchte in eine Tabelle einer Datenbank mit c# eine neue Zeile einfügen. Ich benutze dazu die Methode .NewRow() meiner DataTable. Ich befülle diese neue Zeile und würde sie gerne mittels der Add()-Methode zur Tabelle hinzufügen. Die Zeile besteht aus einem Wert "ID" (der ein Zahlenwert sein soll und gleichzeitig als Primärschlüssel definiert ist) und einem Wert "Name", der einen String darstellt.

    In meiner Eingabemaske wird nur eine Textbox für das Feld "Name" angezeigt. Das Feld ID soll selbständig gefüllt werden (auto increment).

    Beim Aufruf der Add()-Methode wird aber eine Exception ausgelöst, da der Wert für ID leer ist und leere Werte als Primärschlüssel nicht erlaubt sind (Ich habe die Eigenschaften AutoIncrement, AutoIncrementSeed und AutoIncrementStep dieser Spalte festgelegt). Ich gehe eigentlich davon aus, dass der Wert leer bleiben und der Server dann selbständig einen Wert dafür vergeben soll...

    Ich habe mir dann gedacht, dass vielleicht im Dataset irgendwelche Eigenschaften falsch gesetzt wurden und habe dann die Eignenschaft "EnforceConstraints" auf "False" gesetzt. Dann funktioniert die Add()-Methode, aber die Update()-Methode des zugehörigen TableAdapters wirft eine SqlException "Der Wert NULL kann nicht in die ID-Spalte eingefügt werden..."

    Was mache ich falsch?

    (ich benutze Visual C# 2005 und den SqlServer 2005 Express)

     

    Donnerstag, 25. Mai 2006 17:40