相关疑难解决方法(0)

如何使用IOC从存储库中删除工作单元功能

我有一个使用ASP.NET MVC,Unity和Linq to SQL的应用程序.

统一寄存器容器的类型AcmeDataContext,从继承System.Data.Linq.DataContext,具有LifetimeManager使用HttpContext.

有一个控制器工厂使用统一容器获取控制器实例.我在构造函数上设置了所有依赖项,如下所示:

// Initialize a new instance of the EmployeeController class
public EmployeeController(IEmployeeService service)

// Initializes a new instance of the EmployeeService class
public EmployeeService(IEmployeeRepository repository) : IEmployeeService

// Initialize a new instance of the EmployeeRepository class
public EmployeeRepository(AcmeDataContext dataContext) : IEmployeeRepository
Run Code Online (Sandbox Code Playgroud)

每当需要构造函数时,unity容器就会解析一个连接,用于解析数据上下文,然后是存储库,然后是服务,最后是控制器.

问题是IEmployeeRepository暴露SubmitChanges方法,因为服务类没有DataContext引用.

我被告知应该从存储库外部管理工作单元,所以我似乎应该SubmitChanges从我的存储库中删除它.这是为什么?

如果这是真的,这是否意味着我必须声明一个IUnitOfWork接口并使每个服务类依赖它?我还能如何让我的服务类来管理工作单元?

asp.net-mvc domain-driven-design dependency-injection inversion-of-control linq-to-sql

10
推荐指数
1
解决办法
4587
查看次数