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

时间:2015-04-30 13:55:05

标签: c# dependency-injection unity-container

我是依赖注入概念的相对noob,并且在开始一个新项目之前一直试图收集最佳实践。

查看Dependency injection in unit of work pattern using repositories的最佳答案我理解这种方法,但示例代码似乎缺少某些东西,我很难过......

接口IRepository的定义显示为:

public interface IRepository 
{
    void Submit();
}

但是当接口用作GenericRepository类定义的一部分时,提交方法未实现:

public abstract class GenericRepository<T> : IRepository<T> where T : class
{
    public GenericRepository(IUnitOfWork unitOfWork)
    {
        unitOfWork.Register(this);
    }
}

然后,定义了特定实体的存储库类,继承自GenericRepository:

public class DepartmentRepository : GenericRepository<Department> 
{
    public DepartmentRepository(IUnitOfWork unitOfWork): base(unitOfWork) { }
}

我的问题是,鉴于每个不同实体的存储库可能需要引用不同的DataContext,如何使用DI实现通用Submit()方法?

1 个答案:

答案 0 :(得分:3)

您链接的问题是确保工作单位始终了解存储库的解决方案;存储库实现本身是没用的!存储库应该至少公开所有crud操作的方法:

public interface IRepository<TEntity, in TKey> where TEntity : class
{
    TEntity Read(TKey id);
    TEntity Add(TEntity entity);
    TEntity Update(TEntity entity);
    void Delete(TKey id);
}

例如,请参阅this文章。