工作单元示例
本文关键字:单元 工作 | 更新日期: 2023-09-27 18:27:19
我读过这一页:http://aspiringcraftsman.com/2015/11/01/survey-of-entity-framework-unit-of-work-patterns/这很有趣。作者对这个话题有很好的了解,但他不愿意向社区提供样本。
我想使用"注入的工作单元工厂"模式,但我不知道如何实现存储库。例如,我不知道应该在哪里创建DbContext,也不知道在哪里调用SaveChanges();
如有任何帮助,我们将不胜感激!感谢
我会认真考虑是否应该实现工作单元模式的另一个实现,因为正如其他人所说,DbContext
在实现该模式方面做得很好。我曾经在代码库中,人们添加了额外的抽象,你经常会发现这些抽象对你没有好处,因为它们添加的问题至少和解决的问题一样多。考虑在需要的时候停止。
但是,你的问题的答案是:;
- 弄清楚你的应用程序的"入口点"在哪里。例如,对于MVC项目,它是一个控制器
-
使用依赖注入创建入口点/控制器;
public CustomerController(CustomerService customerService) { this.customerService = customerService; }
-
酌情使用服务;
public ActionResult Edit(int id) { var model = this.customService.GetCustomer(id); return View(model); }
-
设置依赖注入,为您的工作单元提供合适的生命周期;
kernel.Bind<IUnitOfWork>().To<EntityFrameworkUnitOfWork>().InRequestScope(); kernel.Bind<ICustomerService().To<CustomerService>(); kernel.Bind<ICustomerRepository>().To<CustomerReposotory>();
然后,当您创建CustomerController时,它会请求CustomerService;它请求一个ICustomerReportstory,它请求IUnitOfWork,在整个请求中为其提供相同的上下文。
这不一定是我推荐的方法,但这就是问题的答案!