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
。有沒有人知道從那裏影響這個特定環境的方法?
感謝您提供有關默認ObjectContext的行爲。然後,機會非常好,類型提供程序不會在默認行爲中添加任何額外的更改檢測,並且我不需要擔心這一點。當然,唯一可以肯定的方法是使用或不使用AutoDetectChanges時,將類型提供程序與原始ObjectContext和/或DbContext進行基準測試。如果我有機會這樣做,我會更新我的問題。 –
@JoelMueller絕對是絕對的,如果你願意,我會非常希望看到結果。我製作了一個基準測試程序,如果你想要一些預先測試的測試,我將它用於github上的博客文章。我使用了特定博客文章的插入/更新方案。如果你最終使用基準測試工具分叉它,我將把你的新測試拉入主幹 –
我使用你的基準測試程序來運行一些比較,而對於批量插入,類型提供程序與每個關閉的AutoDetectChanges類似或優於DbContext案件。所以問題解決了 - 我不需要尋找那種設置。 –