2007-08-30

DuplicateKeyException

LINQ to SQL generiert die DuplicateKeyException-Meldung, wenn es versucht wird, einen zweiten Datensatz mit einem vorhandenen Primärschlüssel zu erstellen.

Zuerst werden die vom DataContext überwachten Objekte geprüft, ob der Primärschlüssel-Wert bereits von einem Objekt in Verwendung ist. Wenn ja, dann wird die DuplicateKeyException generiert, ohne die Daten an die Datenbank weiterzugeben. Wenn der Primärschlüssel in den überwachten Objekten nicht vorkommt, dann wird die generierte SQL-Anweisung an die Datenbank weitergegeben. Ab hier ist es die Aufgabe der SQL-Server, sicherzustellen, dass der Primärschlüssel weiterhin in der Datenbanktabelle eindeutig bleibt. Daher ist es möglich, dass eine SqlException betreffend Primärschlüssel Verletzung generiert wird.

No comments: