asp.net – 为什么我要将UnitOfWork与Repository Pattern一起使
我在网上看到了很多关于UnitOfWork和Repo Pattern的内容,但仍然没有清楚地了解为什么以及何时使用 – 这对我来说有点混乱.
考虑到我可以通过使用DI来使我的存储库可测试,因为在What are best practices for managing DataContext这篇文章中建议使用IoC.我正在考虑将上下文作为对我的存储库构造函数的依赖进行处理,然后像这样处理它? public interface ICustomObjectContext : IDisposable {} public IRepository<T> // Not sure if I need to reference IDisposable here public IMyRepository : IRepository<MyRepository> {} public class MyRepository : IMyRepository { private readonly ICustomObjectContext _customObjectContext; public MyRepository(ICustomObjectContext customObjectContext) { _customObjectContext = customObjectContext; } public void Dispose() { if (_customObjectContext != null) { _customObjectContext.Dispose(); } } ... } 我目前对使用UnitOfWork和Repository Pattern的理解是在多个存储库中执行操作 – 这种行为似乎与@Ladislav Mrnka为Web应用程序推荐的内容相矛盾:
查看完整的答案here 如果我理解正确的话,DataContext应该是短暂的,并且可以在每个请求或演示者的基础上使用(在其他帖子中也可以看到).在这种情况下,repo对上下文执行操作是合适的,因为范围仅限于使用它的组件 – 对吗? 我的回购在IoC注册为瞬态,所以我应该为每个请求获得一个新的回购.如果这是正确的,那么我应该为每个请求获取一个新的上下文(上面的代码),然后处理它 – 说…如果我关注,为什么我会将UnitOfWork模式与存储库模式一起使用上面的约定? 解决方法
据我所知,工作单元模式不一定涵盖多个上下文.它只是封装了一个单一的操作或 – 井 – 工作单元,类似于一个事务.
创建你的上下文基本上开始了一个工作单元;调用DbContext.SaveChanges()完成它. 我甚至可以说,在其当前实现中,Entity Framework的DbContext / ObjectContext类似于存储库模式和工作单元模式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC – 单元测试覆盖初始化方法
- asp.net-mvc-3 – ASP.NET MVC 3 RTM项目中的这个错误是什么
- asp.net-mvc – 从Web窗体转换为MVC
- .net – 我应该使用ASP:Label标签吗?
- ASP.NET MVC3 HttpStatusCodeResult StatusDescription –
- 如何阻止ASP.Net发送默认字符集?
- asp.net-mvc – ASP.NET MVC路由和区域
- 我们可以通过.net native编译asp.net 5应用程序吗?
- ASP.NET对txt文件相关操作(读取、写入、保存)
- asp.net – IIdentity,IPrincipal,OWIN,IdentityUser和IUse