asp.net-mvc – EF上下文管理
发布时间:2020-05-24 14:39:57 所属栏目: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-mvc – UpdateModel和TryUpdateModel
- asp.net – 当.resx文件更改时,App域重新启动.有什么办法可
- 将“onclick”属性添加到asp.net下拉列表项
- asp.net – 为什么GET方法比POST快?
- 如何自定义ASP.NET Web API AuthorizeAttribute的异常要求
- asp.net – 如何在javascript中检测/跟踪回发?
- asp.net-core – ClaimTypes的ASP.NET要求
- asp.net-core – 如何将IHttpContextAccessor注入到Autofac
- asp.net-4.0 – 我可以强制asp设置与id相同的名称
- asp.net – 什么叫Page_Load,它是如何做的?
推荐文章
站长推荐
热点阅读
