Помислете за този типичен сценарий с прекъсната връзка:
- заредете клиентски обект от SQL Server с помощта на LINQ към SQL
- потребителят редактира обекта и нивото на представяне изпраща обратно модифицирания обект.
- слоят данни, използвайки L2S, трябва да изпрати промените на SQL Server
Помислете за тази LINQ към SQL заявка, чието намерение е да вземе клиентски обект.
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.
Въпрос
- Как можете да избегнете това изключение?
- Коя е най-добрата стратегия за актуализиране на обект, който НЕ притежава/иска/не се нуждае от свойство timestamp?
Неоптимални заобиколни решения
- ръчно настройте всяко свойство в актуализирания клиент на оригиналния клиент.
- завъртете друг DataContext