Với LINQ to SQL:LINQ to SQL: Concurrency độ phân giải
using (var db = Database.Context)
{
var root = (from post in db.Post
where post.Id == rootPostId
select post).Single();
root.LastActivityUtc = DateTime.UtcNow;
db.SubmitChanges();
}
Điều gì sẽ xảy ra nếu cùng một kỷ lục được đồng thời bị thay đổi bởi một cuộc gọi đến cùng một phương pháp (trong đó mã này sống) với rootPostId cùng ? Một ngoại lệ có bị ném không?
Trong sự kiện như vậy - xung đột đồng thời - Tôi muốn xử lý nó bằng cách đơn giản loại bỏ thay đổi sao cho chỉ một bản cập nhật cho LastActivityUtc được gửi thay vì cả hai, có thể sẽ có cùng giá trị.
Toàn bộ vấn đề của việc sử dụng LINQ to SQL, ít nhất là đối với tôi, là để tránh việc để tạo ra một thủ tục lưu trữ . Tôi không sử dụng phiên bản Kiến trúc sư của VS, vì vậy tôi không muốn mở SQL Management Studio. Tiếp tục, gọi tôi là lười biếng. :) – core
Ok, bạn lười biếng. Tôi không phải là một fan hâm mộ lớn của các thủ tục được lưu trữ, hoặc, nhưng họ có vị trí của họ, và loại thay đổi nhanh chóng là chính xác những gì họ đang tốt cho. Sử dụng đúng công cụ cho công việc. LINQ to SQL là một cái búa rất lớn. Không phải mọi thứ đều là đinh. – Randolpho