我正在开发一个使用实体框架4和SQLCompact4的WPF桌面应用程序。
Repository实例化一个ObjectContext,当Repository被垃圾收集时,ObjectContext就会被释放。ObjectContext的生存期与应用程序的生存期相同。DataStoreManager类,它为应用程序的生命周期创建并保存一个ObjectContext。当需要存储库时,命令从ObjectContext获取一个DataStoreManager引用,并将其传递给needed的构造函数。application.的生存期是ObjectContext的生存期。
这两种方法都被认为是一种糟糕的做法吗?这两种方法都有绝对的优势吗?这两种方法都被认为是最佳做法吗?开发人员是否比其他开发人员更广泛地接受或使用?谢谢你的帮助。
发布于 2011-03-24 03:38:06
我会认为,在多个访问中保持ObjectContext打开将是一种糟糕的做法。一旦它被破坏,那么您就需要回收并处理这些损坏。
Repository模式更多地用于数据访问的抽象,但不一定映射到上下文的生存期。
工作模式的单位更多是关于一个或多个数据库/存储库访问的封装,即用例可能让您添加一个新的博客,然后添加第一个默认的帖子,这可能需要调用两个存储库,此时您可能希望共享上下文并将这两个命令封装在事务中。添加第二个帖子可能会在几个小时后完成,并成为一个新的上下文/工作单元。
DJ提到上下文生存期是正确的,这通常是在应用程序级别上设置的。
发布于 2011-03-24 03:07:02
最佳实践取决于用户将如何使用应用程序:以及应用程序的结构。
如果一次只有一个用户使用您的应用程序,您甚至可以将您的实体上下文创建为一个静态实例。
每个请求、每个线程、每个表单都可以使用上下文。
阅读更多:http://blogs.microsoft.co.il/blogs/gilf/archive/2010/02/07/entity-framework-context-lifetime-best-practices.aspx
https://stackoverflow.com/questions/5414076
复制相似问题