Câu hỏi đơn giản, có thể đạt được truy vấn này với khung Entity khi cập nhật một thực thể không?Cập nhật câu lệnh với Entity Framework
update test set value = value + 1 where id = 10
Câu hỏi đơn giản, có thể đạt được truy vấn này với khung Entity khi cập nhật một thực thể không?Cập nhật câu lệnh với Entity Framework
update test set value = value + 1 where id = 10
Không thực sự dưới dạng này không.
Bạn sẽ phải chọn tất cả các thực thể phù hợp với tiêu chí của bạn, tìm kiếm chúng và cập nhật chúng.
Nếu bạn đang tìm kiếm thứ gì đó sẽ làm điều đó ngay trong DB vì tập của bạn có thể rất lớn, bạn sẽ phải sử dụng SQL trực tiếp. (Tôi không nhớ nếu EF có cách để thực thi các truy vấn UPDATE trực tiếp theo cách mà LINQ To SQL thực hiện).
Nó phải là, nó sẽ chỉ là một chút hạn chế hơn nói chung.
var myEntity = context.First(item => item.id == 10);
myEntity.value += 1;
context.SaveChanges();
Nên tạo SQL tương tự, bạn có thể xem profiler để xem SQL thực sự được tạo ra, nhưng nó rất giống với câu lệnh của bạn.
SQL EF-tạo là khá khác nhau: hai câu lệnh SQL, mà không phải là nguyên tử. –
+1 b/c nó sử dụng lõi EF. –
Sử dụng tính năng hàng loạt Cập nhật của Entity Framework Extended Library, như thế này:
dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });
MutantNinjaCodeMonkey đã đề cập đến thư viện này trong một nhận xét về một câu trả lời khác. Tôi thấy thư viện phù hợp với hóa đơn rất tốt đến nỗi đáng được chú ý đến trong câu trả lời riêng của nó. –
Chỉ là những gì tôi nghi ngờ, tôi sẽ sử dụng một sproc – Drevak
Hoặc bạn có thể sử dụng: http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update- và-future-queries.aspx – MutantNinjaCodeMonkey
@MutantNinjaCodeMonkey Gói đẹp, cảm ơn bạn đã chia sẻ! –