Ich habe dies viele Male getan und es hat funktioniert.Aktualisieren eines Datensatzes mit Linq-to-SQL
Jedes Beispiel, das ich gefunden habe, ist genau das, was ich habe ..
ich meine Frage ...
var result = from u in tdc.tblUsers
where u.UserID == userID
select u;
und dann ändere ich die Werte ich will:
foreach (tblUsers u in result)
{
//change values (and no im not changing the primary key or foreign keys)
}
dann stelle ich Änderungen
tdc.SubmitChanges();
Ich habe versucht, es auch auf diese Weise vor und bekam den gleichen Fehler
tblUsers result = (from u in tdc.tblUsers
where u.UserID == userID
select u).Single();
result.Address = address;
result.Phone = phone;
tdc.SubmitChanges();
Es wird immer nur abrufen 1 Datensatz mit dieser Abfrage seit UserID
der Primärschlüssel ist.
Wenn es Änderungen abschickt, wird die Ausnahme ausgelöst, dass die Zeile nicht gefunden oder geändert wurde. Ich bin die einzige Person, die dies verwendet, so gibt es keine anderen Konflikte mit dem Zugriff auf die Datenbank oder Sperren. Warum sollte es die ChangeConflictException
werfen? Ich bin mit dem Debugger durchgegangen und die Daten bleiben den ganzen Prozess durch, einschließlich der Änderungen, die ich versuche zu machen.
Verwenden Sie das Entity Framework (und wenn ja, welche Version)? – gunr2171
Auch haben alle Ihre Tabellen Primärschlüssel. Dies schließt die eine, die Sie bearbeiten, und alle Verzweigungstabellen von Fremdschlüsseln ein. – gunr2171
.NET Framework 4 und ja alle Tabellen haben Primärschlüssel und ordnungsgemäße Fremdschlüssel. Diese Abfrage wird nur nach 1 Tabelle ausgeführt, und diese Tabelle enthält keine Fremdschlüssel. Es ist einer meiner Basistabellen. –