我想创建一个环绕在类似的方式对存储库工作类的单元此.
我遇到的问题是尝试通过用IRepository接口替换示例中的通用存储库来实现依赖注入.在链接文章中的uow中,他们使用getter来检查存储库是否被实例化,如果不是,则实例化它.
public GenericRepository<Department> DepartmentRepository
{
get
{
if (this.departmentRepository == null)
{
this.departmentRepository = new GenericRepository<Department>(context);
}
return departmentRepository;
}
}
Run Code Online (Sandbox Code Playgroud)
这是强烈耦合的.
我可以通过两种方式看到这一点.
1的问题是,如果我注入所有存储库,我必须实例化每个存储库,即使我不在特定的工作单元实例中使用它们.因此招致了这样做的开销.我想象使用一个数据库范围的工作单元,这会导致很多不必要的实例化和一个巨大的构造函数.
2的问题是很容易忘记设置和结束空引用异常.
在这种情况下是否有任何最佳实践?还有其他我错过的选择吗?
我刚刚进入依赖注入,并完成了我可以找到的关于该主题的所有研究,但我可能会遗漏一些关键.