asp.net-mvc – EF上下文管理
发布时间:2020-12-16 04:10:49 所属栏目:asp.Net 来源:网络整理
导读:使用MVC应用程序时,管理Entity Framework上下文的最佳方法是什么? 我正在使用存储库/服务模式. 编辑 在查看其中一些问题之后:stackoverflow.com/users/587920/sam-striano,我之前更加困惑.有人说使用每个存储库的上下文,但是如果我想在一个控制器方法中使
|
使用MVC应用程序时,管理Entity Framework上下文的最佳方法是什么?
我正在使用存储库/服务模式. 编辑 在查看其中一些问题之后:stackoverflow.com/users/587920/sam-striano,我之前更加困惑.有人说使用每个存储库的上下文,但是如果我想在一个控制器方法中使用多个存储库呢? 为了遵循良好的分离设计,如何在MVC应用程序中使用UnitOfWork而不依赖于EF?我希望能够使用模拟上下文对我的控制器,模型,服务等进行单元测试? 解决方法
使用依赖注入器/反转控制框架,如:
> Ninject 使用IoC容器,您可以告诉它如何管理单个数据上下文(最常见的是,每个请求).当您为每个请求设置数据上下文时,容器将自动神奇地为每个请求提供需要数据上下文相同数据上下文的任何类. 这是设置Ninject的good article. 假设您正在使用通用存储库,那么您的代码最终会看起来像什么: Ninject模块: public class NinjectRegistrationModule : NinjectModule
{
public override void Load()
{
Bind<MyDataContext>().ToSelf().InRequestScope();
Bind(typeof(RepositoryImplementation<>)).ToSelf().InRequestScope();
}
}
通用存储库: public RepositoryImplementation<T> : IRepository<T> where T : class
{
MyDataContext _dataContext;
public RepositoryImplementation<T>(MyDataContext dataContext)
{
_dataContext = dataContext;
}
// bunch of methods that utilize _dataContext
}
服务类别: public class MyServiceClass
{
IRepository<SomeEntity> _someEntityRepository;
public MyServiceClass(IRepository<SomeEntity> someEntityRepository)
{
_someEntityRepository = someEntityRepository;
}
// do stuff with _someEntityRepository = someEntityRepository;
}
控制器: public class MyController
{
MyServiceClass _myServiceClass;
public MyController(MyServiceClass myServiceClass)
{
// Ninject will auto-magically give us a myServiceClass
// which will Ninject will inject a repository into MyServiceClass's constructor
_myServiceClass = myServiceClass;
}
public ActionResult MyAction()
{
// use _myServiceClass to do stuff
return View();
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net – .NET:如何从Flash创建缩略图
- asp.net – 用于集成的IIS 7的自定义HttpModule
- asp.net – 我应该使用WebMatrix构建一个真实世界
- 在asp.net中HttpContext.Current.User和Thread.C
- asp.net – 正常与云/ Azure托管和SQL Azure与SQ
- asp.net-mvc – 如何在点击电子邮件超链接时打开
- DevExpress ASP.NET Core Controls 2019发展蓝图
- 自定义ASP.Net DataPager生成的HTML
- ASP.NET:在URL中隐藏查询字符串
- ASP.NET MVC:OutputCache的问题
热点阅读
