L'ho fatto molte volte e ha funzionato.Aggiornamento di un record utilizzando Linq-to-SQL
Ogni esempio che ho trovato è esattamente quello che ho ..
faccio la mia domanda ...
var result = from u in tdc.tblUsers
where u.UserID == userID
select u;
e poi cambiare i valori che voglio:
foreach (tblUsers u in result)
{
//change values (and no im not changing the primary key or foreign keys)
}
poi inviare le modifiche
tdc.SubmitChanges();
che ho provato anche in questo modo prima e ottenuto lo stesso errore
tblUsers result = (from u in tdc.tblUsers
where u.UserID == userID
select u).Single();
result.Address = address;
result.Phone = phone;
tdc.SubmitChanges();
Sarà sempre e solo recuperare 1 record con questa query dal UserID
è la chiave primaria.
Quando colpisce invia modifiche, genera eccezione che la riga non è stata trovata o è stata modificata. Sono l'unica persona che usa questo, quindi non ci sono altri conflitti con l'accesso al db o al blocco. Perché dovrebbe lanciare il ChangeConflictException
? Ho fatto il passo con il debugger e i dati persistono lungo tutto il processo, comprese le modifiche che sto cercando di fare.
Si sta utilizzando Entity Framework (e in tal caso, quale versione)? – gunr2171
Inoltre, TUTTE le tue tabelle hanno chiavi primarie. Questo include quello che stai modificando e qualsiasi tabella di ramificazione da chiavi esterne. – gunr2171
.NET Framework 4 e sì tutte le tabelle dispongono di chiavi primarie e di chiavi esterne appropriate. Questa query sta andando solo dopo 1 tabella, e quella tabella non ha alcuna chiave esterna in essa. È uno dei miei tavoli base. –