По умолчанию сущности будут использовать все поля для проверки параллелизма при редактировании. Это то, что бросает InvalidOperationException.
Это может быть установка свойства «Обновить проверку» для всех полей «Никогда». Это необходимо сделать для всех полей, чтобы прикрепить объект как измененный. Если это будет сделано, дополнительный вызов context.SubmitChanges() сохранит данные.
В качестве альтернативы, если вы знаете исходные значения, вы можете прикреплять и делать обновления, но все проверенные значения должны соответствовать исходным значениям.
LinqEntity item = new LinqEntity(){ Id = 1, Name = "OldName", Surname = "OldSurname"};
context.LinqEntities.Attach(item);
item.Name = "John";
item.Surname = "Doe";
context.SubmitChanges();
Я не согласен с утверждением, что это типично. Это, конечно, не относится к ORM, который реализует шаблон ActiveRecord. По мнению многих, это ограничение Linq To SQL. Некоторые хорошие обсуждения здесь: http://www.west-wind.com/Weblog/posts/135659.aspx – 2009-02-11 23:08:18