【发布时间】:2011-10-04 12:31:48
【问题描述】:
我不知道是否有更好的方法来使用DbContext,因为在使用 WCF 时不建议将其设置为静态。所以我们每次要访问数据库时都会创建它。
了解使用实体框架的所有优点后,一些变得毫无用处,因为我们每次都在重新创建DbContext;并且更多可能会导致开销,因为要考虑创建大型实体模型的过程。
你的意见是什么?
【问题讨论】:
-
是否有人愿意评论将单个实例 DataContext 作为 ref 参数传递给需要针对该特定事务使用它的所有各种方法的想法?这样,不同的对象可以从中添加/删除实体,最后,上下文对象可以在所有修改完成后自行更新。
-
@Graham:
DataContext仍然跟踪对检索到的“实体”所做的更改,并维护一个身份缓存,以保证检索到的实体多次使用相同的对象实例来表示。它也是轻量级的,并且创建起来并不昂贵。见msdn.microsoft.com/en-us/library/… -
@Graham:这意味着在您的应用程序生命周期内保留单个实例
DataContext可能是个坏主意。从我的回答中的文章中:“如果您有一种自然的有限生命周期来管理 ObjectContext,例如短暂的 Form、UnitOfWork 或 Repository,那么相应地确定 ObjectContext 的范围可能是最好的选择。 " -
您可以在这里找到创建 DbContext 的成本:stackoverflow.com/questions/1671334/…
标签: c# .net wcf entity-framework-4 dbcontext