我在MVC4应用程序和Ninject.MVC3中使用EF4.3。控制器使用-Repository开关进行MVCscaffolded。MVCScaffolder使用EF为数据访问创建存储库类(和相应的IRepository接口),其中DbContext派生对象始终作为每个脚手架存储库中的数据成员进行“更新”。
MyContext context = new MyContext();搭建控制器的本质是,对于每个控制器,您通常还会获得相应的存储库。
问题:
1)每个拥有控制器的域对象都有一个存储库,这有意义吗?与存储库模式相比,这似乎是违反直觉的,在存储库模式中,只有聚合根应该
be exposed.2)每次实例化存储库对象时生成DbContext派生对象的新实例是否有意义,或者在应用程序启动时使用DI容器注册DbContext派生对象的单例实例并将其解析在单例存储库中是否有意义:
Bind<MyContext>().To<MyContext>().InSingletonScope(); //ninject code on app startup
//resolve context in repositories:
MyContext context = ServiceLocator.Current.GetInstance<MyContext>();在应用程序的生命周期中,将DbContext派生对象作为单例持有有什么缺点吗?
谢谢。
发布于 2012-04-08 01:02:16
of work pattern)时,通常每个
https://stackoverflow.com/questions/10048389
复制相似问题