我正在尝试使用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?我只是认为这听起来不对......
答案 0 :(得分:2)
我的域层中是否应该有IUnitOfWork?
如果你的领域层需要它,那么答案肯定是:是的。
域层应该包含它需要工作的所有内容。您唯一需要记住的是,该层不应该引用任何外部库,它不应该与任何技术特定的实现相关联。
您的IRepository
或IUnitOfWork
的具体实现将位于基础架构/数据层中,您可以在其中引用您想要的任何框架(实体框架,...)
看看这个SO answer,我在那里解释了Doamin Layer需要找到什么(这是一个洋葱架构相关的问题,但没关系)。
并查看此SO answer,您将在其中轻松找到实现UnitOfWork和Repository模式的方法。
答案 1 :(得分:1)
您可以在数据和域层中注入相同的UoW实例。它是应用程序服务,负责UoW作用域和提交,而不是域服务。另请参阅Unit of Work, Entity Framework and Core Services。