Tôi đã thực hiện việc này nhiều lần và nó đã hoạt động.Cập nhật bản ghi bằng cách sử dụng LINQ-to-SQL
Mỗi ví dụ tôi đã tìm thấy là chính xác những gì tôi có ..
tôi làm truy vấn của tôi ...
var result = from u in tdc.tblUsers
where u.UserID == userID
select u;
và sau đó tôi thay đổi các giá trị tôi muốn:
foreach (tblUsers u in result)
{
//change values (and no im not changing the primary key or foreign keys)
}
sau đó tôi gửi các thay đổi
tdc.SubmitChanges();
Tôi có cũng đã cố gắng nó theo cách này trước và có những lỗi tương
tblUsers result = (from u in tdc.tblUsers
where u.UserID == userID
select u).Single();
result.Address = address;
result.Phone = phone;
tdc.SubmitChanges();
Nó sẽ chỉ bao giờ lấy 1 kỷ lục với truy vấn này kể từ UserID
là khóa chính.
Khi lần truy cập gửi thay đổi, nó sẽ ném ngoại lệ cho hàng không được tìm thấy hoặc đã bị thay đổi. Tôi là người duy nhất sử dụng điều này nên không có xung đột nào khác khi truy cập vào db hoặc khóa. Tại sao nó sẽ ném ChangeConflictException
? Tôi đã bước qua với trình gỡ lỗi và dữ liệu vẫn tồn tại trong suốt quá trình, bao gồm những thay đổi mà tôi đang cố gắng thực hiện.
Bạn có đang sử dụng Khung thực thể (và nếu có, phiên bản nào)? – gunr2171
Ngoài ra, hãy TẤT CẢ các bảng của bạn có các khóa chính. Điều này bao gồm một trong những bạn đang chỉnh sửa, và bất kỳ bảng phân nhánh từ các khóa nước ngoài. – gunr2171
.NET Framework 4 và có tất cả các bảng có các khóa chính và khóa ngoài thích hợp. Truy vấn này chỉ được thực hiện sau 1 bảng và bảng đó không có bất kỳ khóa ngoại nào trong đó. Nó là một trong những bảng cơ sở của tôi. –