Рассмотрим этот типичный отключенный сценарий:
- загрузить объект Customer из SQL Server с помощью LINQ to SQL
- пользователь редактирует объект, а уровень представления отправляет обратно измененный объект.
- слой данных, используя L2S, должен отправить изменения в SQL Server
Рассмотрим этот запрос LINQ To SQL, целью которого является создание объекта Customer.
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