【发布时间】:2021-10-23 01:45:25
【问题描述】:
我在我的asp.net 5 项目中使用UnitOfWork,如下所示:
public class UnitOfWork : IUnitOfWork
{
private readonly BaseContext _context;
private IAsyncRepository<CategoryEntity> _categoryRepository;
private IAsyncRepository<ItemEntity> _itemRepository;
public UnitOfWork(BaseContext context)
{
_context = context;
}
public IAsyncRepository<CategoryEntity> CategoryRepository
{
get
{
return _categoryRepository ??= new CategoryRepository(_context);
}
}
public IAsyncRepository<ItemEntity> ItemRepository
{
get
{
return _itemRepository ??= new ItemRepository(_context);
}
}
}
有没有办法lazy inject 我的CategoryRepository : IAsyncRepository 或ItemRepository : IAsyncRepository 使用依赖注入,只有在我访问特定存储库时才会实例化它,并且同样需要DbContext在存储库之间共享?这可能有助于消除紧密耦合。请帮忙。
【问题讨论】:
-
这种设计有其挑战。依赖关系应该是相反的。存储库需要依赖于工作单元,否则需要工厂抽象,这可能会使设计更加复杂。
-
this 方法适用于您使用的容器
标签: c# asp.net-core dependency-injection entity-framework-core unit-of-work