Standardmäßig verwenden die Entitäten alle Felder, um die Parallelität beim Bearbeiten zu überprüfen. Das wirft die InvalidOperationException.
Dies kann die Eigenschaft Update Check für alle Felder auf Nie setzen. Dies muss in allen Feldern geschehen, um die Entität als modifiziert anzuhängen. Wenn dies geschieht, speichert ein zusätzlicher Aufruf von context.SubmitChanges() die Daten.
Wenn Sie die ursprünglichen Werte kennen, können Sie alternativ die Änderungen anhängen und dann die Aktualisierungen vornehmen. Alle Werte, die überprüft werden, müssen jedoch den ursprünglichen Werten entsprechen.
LinqEntity item = new LinqEntity(){ Id = 1, Name = "OldName", Surname = "OldSurname"};
context.LinqEntities.Attach(item);
item.Name = "John";
item.Surname = "Doe";
context.SubmitChanges();
Ich stimme der Aussage nicht zu, dass dieses Verhalten typisch ist. Dies ist bei ORM, die das ActiveRecord-Muster implementieren, nicht der Fall. Nach Meinung vieler ist dies eine Einschränkung von Linq To SQL. Einige gute Diskussion hier: http://www.west-wind.com/Weblog/posts/135659.aspx –
Linq-to-Sql implementiert Active Record nicht. – liammclennan