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 Server

Rozważ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

questionAnswers(2)

yourAnswerToTheQuestion