私はDIを初めて使用し、コントローラーにUnitOfWorkが注入され、このUnitOfWorkにドメイン内の各エンティティタイプのリポジトリが含まれるMVCプロジェクトに取り組んでいます。ガイドとしてMSDNを使用して、私はもともと次のようなものを持っていました
public IRepository<Employee> Employees {
get {
if (_employees == null) {
_employees = new SqlRepository<Employee>(_context);
}
return _employees;
}
}
ただし、リポジトリを挿入するとよいと思いました。たとえば、次のようになります。
public SqlUnitOfWork(IRepository<Employee> employees)
{
this.Employees = employees;
}
しかし、SqlRepositoryの作成に非常に費用がかかる場合はどうでしょうか。すべてのコントローラーアクションがすべてのリポジトリを使用するわけではありません。DIに変更する前は、各リポジトリはアクセスされた場合にのみ作成されていました。ただし、現在、すべてのリポジトリはUnitOfWorkで作成されています。すでにSqlUnitOfWorkにいるときに、SqlRepositoriesを挿入する価値があるかどうかを判断しようとしていますか?または、MSDNの例に従う必要がありますか?