簡體   English   中英

在每次調用時初始化實體框架objectcontext

[英]initializing the entity framework objectcontext on every call

我有一個使用Entity框架作為數據訪問層的Web應用程序。 現在我正在初始化每個請求從ObjectContext繼承的實體類。

我只是想知道從性能的角度來看是否存在任何缺點或后果。 緩存此對象是否更好?

請注意,我有大型edmx文件,有些包含大約50個表

每個請求初始化一個ObjectContext可能是在Web應用程序中實現EF的最常用方法。 這樣做不是性能問題,初始化非常便宜。 ObjectContext是EF的工作單元模式的實現,因此將數據庫中的對話封裝在單個工作單元中是一種很好的做法。 跨請求緩存ObjectContext可能會有問題,因為在Web應用程序中不能輕易處理長時間運行的數據庫對話,因為您永遠不知道來自給定客戶端的下一個請求何時到達。

在Web應用程序中處理Entity Framework時,建議使用此方法。

但是,如果可以將表划分為獨立區域,則可以將包含50個表的上下文分區為幾個上下文。 然后,您將更容易管理上下文。

不建議緩存上下文。 ObjectContext不是線程安全的。 IT也將違反工作單元模式。 這將導致不必要的行為,例如在單個事務中提交多個用戶的更改。

每個請求或操作使用新的上下文實例是必須的 對此沒有性能影響,因為元數據(來自EDMX)僅加載和編譯一次(第一次需要它們),之后元數據將重用於同一上下文的所有實例,直到應用程序池回收。 您甚至可以通過預編譯元數據來加速初始化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM