1
我的應用程序的工作流程非常簡單:如何從實體框架中的對象上下文中分離出一個對象圖,而不是往返於數據庫?
對於腳本的給定一串
- 採取腳本
- 解析它
- 得到分貝
- 更新對應的對象圖,或如果未找到圖形,則創建新圖形
- 保存更改
- 從對象上下文中分離圖對於GC可以殺死圖形
如果爲每個腳本創建對象上下文,但它會影響性能,列表的最後一個項目是沒有必要而且我想要一些存儲在上下文,而其他實體的GC收集。
我想手動分離的實體:
foreach (var desc in component.Descriptions)
context.ComponentDescription.Detach(desc);
context.Components.Detach(component);
這樣的枚舉意味着數據庫查詢中啓用了延遲加載的情況下。這根本不是一件好事。
我發現這種方式更像是一個黑客:
var entities = context.ObjectStateManager.GetObjectStateEntries(EntityState.Unchanged).Where(
e => !(e.Entity is ComponentType));
entities.Iterate(e => e.ChangeState(EntityState.Detached));
好吧,它不是一個圖形拆卸,但我只知道我可以在我的情況下做到這一點。但是如果我需要使用特定的圖表,我怎麼能分離相關的屬性而不'干擾'分貝?
>我不明白爲什麼創建每個操作的上下文會影響性能。 1)重新連接(與池沒有關係) 2)需要保存上下文的某些部分 –