2013-01-02 24 views
4

This article提供了一些證據表明,關閉實體框架數據上下文中的AutoDetectChanges可以在插入大量實體時提供顯着的性能改進。有什麼辦法來控制SqlEntityConnection上的AutoDetectChanges?

context.Configuration.AutoDetectChangesEnabled = false; 

然而,由SqlEntityConnection type provider提供的DataContext似乎並沒有提供任何辦法來控制此設置。

沒有context.Configuration屬性或context.DataContext.Configuration屬性。有一個context.DataContext.ContextOptions但它甚至沒有什麼像AutoDetectChangesEnabled

類型提供程序上下文中的DataContext屬性類型爲System.Data.Objects.ObjectContext。有沒有人知道從那裏影響這個特定環境的方法?

回答

5

我去年寫了一個非常類似的文章上發現變化的表現,你可以在這裏找到:http://blog.staticvoid.co.nz/2012/5/7/entityframework_performance_and_autodetectchanges我的經驗是多爲的DbContext(它包裝ObjectContext的),但我做了一些搜索,發現以下

Why is inserting entities in EF 4.1 so slow compared to ObjectContext?

這是什麼說的是ObjectContext實際上並沒有做自動變化檢測,所以這不是你應該擔心的事情。但是,您仍然需要了解大型對象圖會減慢速度,因爲所有快照跟蹤方案都會檢測到某些點需要進行更改,並且這需要完整枚舉對象圖

+0

感謝您提供有關默認ObjectContext的行爲。然後,機會非常好,類型提供程序不會在默認行爲中添加任何額外的更改檢測,並且我不需要擔心這一點。當然,唯一可以肯定的方法是使用或不使用AutoDetectChanges時,將類型提供程序與原始ObjectContext和/或DbContext進行基準測試。如果我有機會這樣做,我會更新我的問題。 –

+0

@JoelMueller絕對是絕對的,如果你願意,我會非常希望看到結果。我製作了一個基準測試程序,如果你想要一些預先測試的測試,我將它用於github上的博客文章。我使用了特定博客文章的插入/更新方案。如果你最終使用基準測試工具分叉它,我將把你的新測試拉入主幹 –

+0

我使用你的基準測試程序來運行一些比較,而對於批量插入,類型提供程序與每個關閉的AutoDetectChanges類似或優於DbContext案件。所以問題解決了 - 我不需要尋找那種設置。 –

相關問題