C# 工作单元示例
我读了这一页: 这很有趣。作者对该主题有很好的了解,但他不愿意向社区提供样本 我想使用“注入式工作单元工厂”模式,但我不知道如何实现存储库。例如,我不知道应该在哪里创建DbContext,在哪里调用SaveChanges() 任何帮助都将不胜感激!C# 工作单元示例,c#,entity-framework,repository-pattern,dbcontext,unit-of-work,C#,Entity Framework,Repository Pattern,Dbcontext,Unit Of Work,我读了这一页: 这很有趣。作者对该主题有很好的了解,但他不愿意向社区提供样本 我想使用“注入式工作单元工厂”模式,但我不知道如何实现存储库。例如,我不知道应该在哪里创建DbContext,在哪里调用SaveChanges() 任何帮助都将不胜感激! 谢谢我会仔细考虑是否应该实现工作单元模式的另一个实现,因为正如其他人所说,DbContext在实现该模式方面做得相当好。我曾经在代码库中,人们添加了额外的抽象,通常你会发现抽象对你没有好处,因为它们添加的问题至少和它们解决的问题一样多。考虑离开,直到
谢谢我会仔细考虑是否应该实现工作单元模式的另一个实现,因为正如其他人所说,
DbContext
在实现该模式方面做得相当好。我曾经在代码库中,人们添加了额外的抽象,通常你会发现抽象对你没有好处,因为它们添加的问题至少和它们解决的问题一样多。考虑离开,直到需要。p>
但是,你的问题的答案是
- 找出你的应用程序的“入口点”在哪里。例如,对于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>();
kernel.Bind().To().InRequestScope();
kernel.BindEntity框架和DB上下文封装了工作单元模式,无需自行实现。在添加答案或注释之前,请阅读链接页面。我知道有数百种方法可以实现UoW和存储库模式,但我的问题非常具体到“注入的工作单元工厂”。您可以简单地实现本文所述的工作单元模式,但只需添加工厂模式即可创建UoW: