2013-03-04 27 views
7

Tôi có một cái gì đó như thế này:Có cách nào để xóa cơ chế theo dõi thay đổi cho một thực thể không?

var dbTransactions = context.Transactions.Where(t => t.Date >= yesterday).Select(t => t).ToList(); 

Bây giờ, tôi muốn để loại bỏ các đối tượng từ danh sách dbTransactions, nhưng không phải từ cơ sở dữ liệu thực tế. Sau đó tôi gọi context.SaveChanges() và nếu tôi làm như vậy, nó sẽ xóa các hàng khỏi db của tôi. Làm thế nào tôi có thể vô hiệu hóa các thay đổi theo dõi cho dbTransactions?

+1

http://stackoverflow.com/questions/4168073/entity-framework-code-first- no-detach-method-on-dbcontext – SLaks

+1

Loại bỏ các đối tượng khỏi một 'Danh sách ' sẽ không đánh dấu chúng là bị xóa trong 'DbContext' –

Trả lời

9

Tôi nghĩ rằng bạn có thể sử dụng AsNoTracking và cho giao dịch dùng Detach

Youcontext.YourEntities.AsNoTracking().Where); 

hoặc sử dụng

Youcontext.Transactions.Detach(obj); 
+0

Có bất cứ điều gì giống như thuộc tính' [NoTracking] 'để sử dụng cho các thực thể POCO không? Làm thế nào chúng ta nên đánh dấu các thực thể POCO (trong trường hợp tra cứu các thực thể của chúng ta) là không theo dõi ?! – orad

0

Di chuyển những đơn vị từ bối cảnh sử dụng Detach():

context.Transactions.Detach(obj); 

như vậy rõ ràng bạn sẽ phải khôi phục lại danh sách đó - nhưng sau đó chỉ cần lặp qua nó và tách chúng.

Các vấn đề liên quan