我在MVC4应用程序和Ninject.MVC3中使用EF 4.3。 控制器是使用-Repository开关的MVCcaffolded。 MVCScaffolder使用EF创建存储库类(以及相应的IRepository接口),用于数据访问,其中DbContext派生对象始终作为每个脚手架存储库中的数据成员“新建”。
MyContext context = new MyContext();
脚手架控制器的本质是,对于每个控制器,您通常也会获得相应的存储库。
问题:
1)为每个拥有控制器的域对象建立一个存储库是否有意义? 与仅存在聚合根的存储库模式相比,这似乎违反直觉 暴露。
2)每次生成一个DbContext派生对象的新实例是否有意义 存储库对象是实例化的,或者有一个单例实例是否有意义 在app启动时向DI容器注册的DbContext派生对象并在其中解析它 单身存储库如此:
Bind<MyContext>().To<MyContext>().InSingletonScope(); //ninject code on app startup
//resolve context in repositories:
MyContext context = ServiceLocator.Current.GetInstance<MyContext>();
持有DbContext派生对象是否有任何缺点 申请生命周期内的单身人士?
感谢。
答案 0 :(得分:2)