Zrobiłem to wiele razy i zadziałało.Aktualizowanie rekordu przy użyciu Linq-SQL
Każdy przykład znalazłem jest dokładnie to, co mam ..
robię moje zapytanie ...
var result = from u in tdc.tblUsers
where u.UserID == userID
select u;
a następnie zmienić wartości Chcę:
foreach (tblUsers u in result)
{
//change values (and no im not changing the primary key or foreign keys)
}
następnie przesyłam zmiany
tdc.SubmitChanges();
Próbowałem też go w ten sposób przed i dostał ten sam błąd
tblUsers result = (from u in tdc.tblUsers
where u.UserID == userID
select u).Single();
result.Address = address;
result.Phone = phone;
tdc.SubmitChanges();
Będzie tylko kiedykolwiek odzyskać 1 rekord z tego zapytania od UserID
jest kluczem podstawowym.
Po otrzymaniu zmian, rzuca wyjątek, że wiersz nie został znaleziony lub został zmieniony. Jestem jedyną osobą używającą tego, więc nie ma żadnych innych konfliktów z dostępem do bazy danych lub blokowania. Dlaczego miałby on rzucić ChangeConflictException
? Przeszedłem przez debuggera, a dane są cały czas przez cały proces, w tym zmiany, które próbuję wprowadzić.
Czy korzystasz z Entity Framework (a jeśli tak, to jakiej wersji)? – gunr2171
Również WSZYSTKIE twoje tabele mają klucze podstawowe. Obejmuje to ten, który edytujesz, oraz wszelkie tabele rozgałęzień z kluczy obcych. – gunr2171
.NET Framework 4 i tak wszystkie tabele mają Klucze podstawowe i właściwe klucze obce. To zapytanie dotyczy tylko jednej tabeli i ta tabela nie zawiera żadnych kluczy obcych. Jest to jeden z moich podstawowych tabel. –