相关疑难解决方法(0)

使用存储库在工作单元模式中的依赖注入

我想创建一个环绕在类似的方式对存储库工作类的单元.

我遇到的问题是尝试通过用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. 使用setter注入.

1的问题是,如果我注入所有存储库,我必须实例化每个存储库,即使我不在特定的工作单元实例中使用它们.因此招致了这样做的开销.我想象使用一个数据库范围的工作单元,这会导致很多不必要的实例化和一个巨大的构造函数.

2的问题是很容易忘记设置和结束空引用异常.

在这种情况下是否有任何最佳实践?还有其他我错过的选择吗?

我刚刚进入依赖注入,并完成了我可以找到的关于该主题的所有研究,但我可能会遗漏一些关键.

c# entity-framework dependency-injection unit-of-work

39
推荐指数
2
解决办法
3万
查看次数