.Net 在使用存储库的工作单元模式中进行依赖注入
.Net Dependency injection in unit of work pattern using repositories
我对依赖注入的概念比较陌生,在开始新项目之前一直在尝试收集最佳实践。
查看 Dependency injection in unit of work pattern using repositories 的最佳答案我理解这种方法,但示例代码似乎缺少一些东西,我很困惑...
接口IRepository
的定义如图:
public interface IRepository
{
void Submit();
}
但是当接口作为GenericRepository
class定义的一部分时,Submit方法没有实现:
public abstract class GenericRepository<T> : IRepository<T> where T : class
{
public GenericRepository(IUnitOfWork unitOfWork)
{
unitOfWork.Register(this);
}
}
然后,为特定实体定义了一个存储库 class,继承自 GenericRepository:
public class DepartmentRepository : GenericRepository<Department>
{
public DepartmentRepository(IUnitOfWork unitOfWork): base(unitOfWork) { }
}
我的问题是,鉴于每个不同实体的存储库可能需要引用不同的 DataContext
,应该如何使用 DI 实现通用 Submit()
方法?
您 link 提出的问题是确保工作单元始终了解存储库的解决方案;存储库实现本身非常无用!存储库应该至少公开所有 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 文章。
我对依赖注入的概念比较陌生,在开始新项目之前一直在尝试收集最佳实践。
查看 Dependency injection in unit of work pattern using repositories 的最佳答案我理解这种方法,但示例代码似乎缺少一些东西,我很困惑...
接口IRepository
的定义如图:
public interface IRepository
{
void Submit();
}
但是当接口作为GenericRepository
class定义的一部分时,Submit方法没有实现:
public abstract class GenericRepository<T> : IRepository<T> where T : class
{
public GenericRepository(IUnitOfWork unitOfWork)
{
unitOfWork.Register(this);
}
}
然后,为特定实体定义了一个存储库 class,继承自 GenericRepository:
public class DepartmentRepository : GenericRepository<Department>
{
public DepartmentRepository(IUnitOfWork unitOfWork): base(unitOfWork) { }
}
我的问题是,鉴于每个不同实体的存储库可能需要引用不同的 DataContext
,应该如何使用 DI 实现通用 Submit()
方法?
您 link 提出的问题是确保工作单元始终了解存储库的解决方案;存储库实现本身非常无用!存储库应该至少公开所有 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 文章。