EF4:ObjectContext终身?

Dav*_*man 5 entity-framework repository entity-framework-4

我正在开发一个使用Entity Framework 4和SQL Compact 4的WPF桌面应用程序.我看过两种不同类型的Repository类:

  • Repository实例化ObjectContext,其设置时的Repository是垃圾收集.该生命ObjectContext周期与应用程序的生命周期相同.

  • 一个单独的DataStoreManager类创建并保存ObjectContext应用程序的生命周期.当需要存储库时,命令从中获取ObjectContext引用 DataStoreManager并将其传递给New Repository的构造函数.该生命ObjectContext周期是应用程序的生命周期.

这两种方法都被视为不良做法吗?是否存在任何绝对优势?这两种方法都被认为是最佳做法 是否被开发人员广泛接受或使用?谢谢你的帮助.

D.J*_*D.J 7

The best practice is depended on how your users are going to use the application: And how your application is structured.

if there is only one user using your application at one time, you can even create your entity context as a static instance.

context can be used per request, per thread, per form.

read more: http://blogs.microsoft.co.il/blogs/gilf/archive/2010/02/07/entity-framework-context-lifetime-best-practices.aspx


JTe*_*Tew 7

我原以为在多次访问中打开ObjectContext会是不好的做法.一旦它被破坏,那么你需要回收并处理腐败.

存储库模式更多地用于抽象数据访问,但不一定映射到上下文的生命周期.

工作单元模式更多地是关于一个或多个数据库/存储库访问的封装,即用例可能让您添加新的博客然后添加第一个默认帖子,这可能需要调用两个存储库,此时您可能希望共享上下文并将这两个命令封装在事务中.添加第二篇文章可能会在几小时后完成,并成为新的上下文/工作单元.

DJ提到你通常在应用程序级别设置的上下文生命周期是正确的.