2013-02-18 36 views
5

Tôi đã tự hỏi tại sao thuộc tính AutoDetectChangesEnabled trên DbContext được đặt thành false theo mặc định.Tại sao AutoDetectChangesEnabled được đặt thành false theo mặc định?

Tôi muốn chèn số lượng lớn vào ngữ cảnh của mình và như bạn có thể biết việc chuyển tự động phát hiện thành sai sẽ mang lại hiệu suất tốt hơn.

Ý tôi là, nếu tôi biết khi nào cần phát hiện các thay đổi đối với ngữ cảnh của mình, có lý do gì không nên đặt AutoDetectChangesEnabled thành false không?

+0

Tôi đoán nhóm EF nghĩ rằng tải lên hàng loạt là một trường hợp cạnh so với các hoạt động CRUD thông thường ... và do đó được mặc định theo yêu cầu chung. – lzcd

+0

@Izcd Cảm ơn điều này có ý nghĩa! –

Trả lời

4

Tôi nghĩ rằng có khả năng họ muốn có hành vi phổ biến hơn và rất hữu ích để làm việc ra khỏi hộp.

var mycontext = new DemoContext(); 
var myEntity = myContent.Thinhymybobs.find(akey); 
myEntity.PropX = newvalue; 
mycontext.saveChnages(); 

Bản cập nhật được gửi đến DB là nhận thức delta và tuyên bố tập hợp cập nhật được sử dụng cho phù hợp. Vì vậy, đây là thân thiện trên DB.

Khi thực hiện các thao tác "hàng loạt" trên DB, câu hỏi về hiệu suất thường là một suy nghĩ tự nhiên. Vì vậy, tự hỏi về việc thay đổi tắt hoặc thực sự EVEN sử dụng theo dõi là một câu hỏi có khả năng tôi cảm thấy.

Bài viết này có thể bạn quan tâm. Trạng thái của một mục nhập. http://msdn.microsoft.com/en-us/data/jj592676.aspx

+0

Cảm ơn, tôi cũng nghĩ đây là lý do tại sao nhưng tôi muốn ý kiến ​​của người khác –

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