如何使用域层中的工作单元

时间:2013-07-15 02:38:13

标签: .net domain-driven-design unit-of-work

我正在尝试使用My Service类中的工作单元模式。
我有我的CompanyService类

public class CompanyService: ICompanyService
{
    private readonly ICompanyRepository _companyRepository;

    public CompanyService(ICompanyRepository companyRepository)
    {
        _companyRepository = companyRepository;
    }

    public void CreateCompany(Company company)
    {
        _companyRepository.Add(company);
        //I want to have unit of work commit here!!! 
        //unitofwork.commit(); 
    }

    public void UpdateCompany(Company company)
    { etc...}

如果我的IUnitOfWork在我的数据层中,而不是在我的域层中,如何在我的ServiceClass中注入UnitOfWork的实例?我的域层中是否应该有IUnitOfWork?我只是认为这听起来不对......

2 个答案:

答案 0 :(得分:2)

  

我的域层中是否应该有IUnitOfWork?

如果你的领域层需要它,那么答案肯定是:是的。

域层应该包含它需要工作的所有内容。您唯一需要记住的是,该层不应该引用任何外部库,它不应该与任何技术特定的实现相关联。

您的IRepositoryIUnitOfWork的具体实现将位于基础架构/数据层中,您可以在其中引用您想要的任何框架(实体框架,...)

看看这个SO answer,我在那里解释了Doamin Layer需要找到什么(这是一个洋葱架构相关的问题,但没关系)。
并查看此SO answer,您将在其中轻松找到实现UnitOfWork和Repository模式的方法。

答案 1 :(得分:1)

您可以在数据和域层中注入相同的UoW实例。它是应用程序服务,负责UoW作用域和提交,而不是域服务。另请参阅Unit of Work, Entity Framework and Core Services