Ich glaube, Sie stoßen auf den Standard Optimistische Zustimmung Verhalten in LINQ to SQL (und ich glaube, dass LINQ to Entities auf dieselbe Weise funktioniert).
Wenn nicht anders angegeben, wird kurz vor der Aktualisierung einer Zeile eine SELECT-Anweisung mit den vorherigen Werten aller Spalten in der Zeile ausgeführt, um festzustellen, ob jemand anderes sie geändert hat, während Sie sie im Speicher hatten.
Es klingt jedoch so, als wüsste es nicht, wie man zwei Binary-Instanzen vergleicht.
Wenn dies der Fall ist, haben Sie zwei Möglichkeiten:
- Verwenden Sie eine explizitere Version der optimistischen Gleichzeitigkeit, indem Sie die Zeilenversion auf der Grundlage einer bestimmten Zeitstempelzeile identifizieren ( bevorzugt )
- Optimistische Gleichzeitigkeit deaktivieren
Hier ist die Dokumentation für optimistische Gleichzeitigkeit für LINQ to SQL.