Wyjątek LINQ do SQL z załącznikiem (): Nie można dodać elementu za pomocą klucza, który jest już używany
Rozważmy ten typowy odłączony scenariusz:
załaduj obiekt Customer z SQL Server za pomocą LINQ To SQLużytkownik edytuje jednostkę, a warstwa prezentacji odsyła zmodyfikowaną jednostkę.warstwa danych, używając L2S, musi wysłać zmiany do SQL ServerRozważmy to zapytanie LINQ To SQL, którego zamiarem jest przejęcie jednostki klienta.
Cust custOrig = db.Custs.SingleOrDefault(o => o.ID == c.ID); //get the original
db.Custs.Attach(c, custOrig); //we don't have a TimeStamp=True property
db.SubmitChanges();
DuplicateKeyException: Cannot add an entity with a key that is already in use.
Pytanie
Jak można uniknąć tego wyjątku?Jaka jest najlepsza strategia aktualizacji jednostki, która NIE ma / chce / potrzebuje własności znacznika czasu?Suboptymalne obejścia
ręcznie ustaw każdą właściwość w zaktualizowanym kliencie na klienta orig.zakręć innym DataContext