ich eine Tabelle, die wie folgt aussieht:Linq2SQL mit Einsätzen Umgang/löscht auf Tabelle mit einzigartigen Einschränkungen
TABLE Foo
{
Guid Id [PK],
int A [FK],
int B [FK],
int C [FK],
}
Und eindeutige Einschränkung über A, B und C.
Jetzt zum Beispiel sagen, Sie fügen eine Zeile mit einem frischen PK mit ein mit A = 1, B = 1, C = 1.
SubmitChanges()
, alle glücklich.
Jetzt bearbeiten Sie die Tabelle.
Sie den vorherigen Eintrag entfernen, und eine Zeile mit einem fresk PK Einsatz mit A = 1, B = 1, C = 1.
SubmitChanges()
BOOM! Eindeutige Schlüsseleinschränkung SQL-Ausnahme.
Von dem, was ich sehen kann, versucht es, zuerst den neuen Datensatz einzufügen und dann zu versuchen, den vorherigen zu löschen. Ich kann sogar verstehen, dass es nicht möglich ist, die Reihenfolge zu bestimmen, in der dies geschehen muss.
Aber was kann ich dagegen tun? Würden diese 3 Felder zu einer zusammengesetzten PK machen (und die alte entfernen) wäre eine bessere Lösung oder wird es nicht einmal funktionieren?
Für jetzt ist die "Lösung", die eindeutigen Einschränkungen aus der Datenbank zu entfernen (aber ich werde es eher nicht tun).
Leider nicht so einfach. Die Liste wird über eine BindingList verwaltet, die von einem an ein DataGridView gebundenen EntitySet erhalten wird. – leppie