工作单元示例

本文关键字:单元 工作 | 更新日期: 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,在整个请求中为其提供相同的上下文。

这不一定是我推荐的方法,但这就是问题的答案!