asp.net-mvc – 工作单元,存储库,注入,使用块
介绍
在阅读了多篇关于如何实现工作单元并牢记可测试性(单元测试)的文章之后,我可以在以下部分内容中看到以下内容: >接口:IRepository,IUnitOfWork. IRepository可以(可能是)像IRepository< TEntity>这样的泛型. using(var uow = new UnitOfWork()) { //some work here,maybe accessing member repositories in uow like: //var item = uow.Repository1.GetById(1); //item.SomeModifyingOperation(); uow.Save(); } 问题/意见 >这样的用法是否可测试?它显然取决于UnitOfWork的具体实现. 参考 > http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application 解决方法
创建一个通过DI注入的IUnitOfWorkFactory:
public interface IUnitOfWorkFactory { IUnitOfWork Create(); } public class UnitOfWorkFactory : IUnitOfWorkFactory { public IUnitOfWork Create() { return new UnitOfWork(); } } 然后在您的消费者中注入UnitOfWorkFactory: public MyController(IUnitOfWorkFactory workFactory) { this.workFactory = workFactory; } public ActionResult DoSomething() { using(var uow = workFactory.Create()) { //do work } } 这样你就能从两个世界中获得最大的收益.你注入了你的对象 – 有助于测试.并且您可以在需要时自动处理您的UOW. 顺便说一句,这是从the DI book值得阅读这些模式的例子. 编辑:This chapter from DI book正在谈论一次性物品 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC正则表达式路由约束
- ASP.Net MVC身份无限重定向循环
- asp.net-web-api – 使用WebAPI PUT / POST请求启用CORS?
- asp.net-core – 从显式类型的ASP.NET Core API控制器(不是
- asp.net-mvc-2 – 覆盖“Html.EditorFor”上的类
- CommandArgument(与ASP.NET Repeater一起使用)是否需要验证
- asp.net – 如何在没有查找AspNetUserRoles表的情况下获取W
- Asp.Net何时删除过期的缓存项?
- asp.net MVC解决方案/项目布局
- ASP.NET Web App和ASP.NET MVC 3 Empty Web App之间的区别?