使用Entity Framework时,我目前拥有一个包含所有表的dbcontext。
我想知道这是否是每个人都这样做的,或者例如每个模块都有一个上下文。对我而言,dbcontext是将模型映射到数据库的连接,而且由于只有一个数据库,我只需要一个。
在我深入研究之前,我想确定这是否合适。
因此,每个数据库是1个db context还是多个?
使用Entity Framework时,我目前拥有一个包含所有表的dbcontext。
我想知道这是否是每个人都这样做的,或者例如每个模块都有一个上下文。对我而言,dbcontext是将模型映射到数据库的连接,而且由于只有一个数据库,我只需要一个。
在我深入研究之前,我想确定这是否合适。
因此,每个数据库是1个db context还是多个?
最近我经历了同样的过程,并在这个主题上找到了一些很好的资源。以下是几个非常有用的资源:
我正在构建一个桌面应用程序,最终我使用多个上下文,以便将生命周期绑定到模块而不是应用程序。这对我非常有效,我喜欢我的DbContext
没有被DbSets
淹没,而且仅限于当前模块相关的内容。
在ASP.NET MVC应用程序中,情况就不同了,因为DbContext
只会在请求期间存在,在这种情况下,我通常使用单个DbContext
来简化事情,除非数据库非常大。对于大型数据库,我可能会将其分解成多个DbContexts
,以限制开销和杂乱,并使事物分隔开来。
目前,EF尚未被设计成可以分解为不同的dbContexts。这里有一个很棒的讨论
针对这种情况,我们所做的是创建了一个与我们的MVC网站不同的项目,专门用于数据库生成,并为每个需求单独创建了dbContexts。
这样,我们的dbContexts永远不会太大,易于维护。