首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC3脚手架存储库中的单个DbContext派生对象

MVC3脚手架存储库中的单个DbContext派生对象
EN

Stack Overflow用户
提问于 2012-04-07 03:36:59
回答 1查看 1.2K关注 0票数 1

我在MVC4应用程序和Ninject.MVC3中使用EF4.3。控制器使用-Repository开关进行MVCscaffolded。MVCScaffolder使用EF为数据访问创建存储库类(和相应的IRepository接口),其中DbContext派生对象始终作为每个脚手架存储库中的数据成员进行“更新”。

代码语言:javascript
复制
MyContext context = new MyContext();

搭建控制器的本质是,对于每个控制器,您通常还会获得相应的存储库。

问题:

1)每个拥有控制器的域对象都有一个存储库,这有意义吗?与存储库模式相比,这似乎是违反直觉的,在存储库模式中,只有聚合根应该

代码语言:javascript
复制
be exposed.

2)每次实例化存储库对象时生成DbContext派生对象的新实例是否有意义,或者在应用程序启动时使用DI容器注册DbContext派生对象的单例实例并将其解析在单例存储库中是否有意义:

代码语言:javascript
复制
Bind<MyContext>().To<MyContext>().InSingletonScope();  //ninject code on app startup


 //resolve context in repositories: 
 MyContext context = ServiceLocator.Current.GetInstance<MyContext>();

在应用程序的生命周期中,将DbContext派生对象作为单例持有有什么缺点吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-08 01:02:16

  1. ,这取决于你所期望的。如果您想使用真实的存储库,您将使用聚合根目录,并且您将自己编写这些存储库(不会自动生成),因为这样的存储库总是特定的。如果你只是想要generic wrapper around EF,你可以使用你当前的解决方案。当您的控制器必须使用多个存储库并且必须协调将所有存储库中的数据保存在一起(

of work pattern)时,通常每个

  1. 请求都会使用新的上下文。Don't use singleton context!
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10048389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档