我一直在C#中搜索存储库和工作单元模式,到目前为止,这是我发现的:
public class Repository<T> : IRepository<T> where T:class
{
private DbContext context;
private DbSet<T> _dbSet;
public Repository(DbContext context)
{
this.context = context;
_dbSet = context.Set<T>();
}
}
然而,在一个给我学习的项目中,我看到了这个:
public class Repository<T> : IRepository<T> where T:class
{
private readonly IUnitOfWork _unitOfWork
private readonly DbSet<T> _dbSet;
public Repository(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork
_dbSet = ((DbContext)_unitOfWork).Set<T>();
}
}
有人可以澄清一下我的区别吗?任何解释都将受到高度赞赏。谢谢!
答案 0 :(得分:3)
技术上差别不大,但界面的使用要好得多,因为你可以抽象DbContext
,看看你是否需要将EF更改为另一个ORM,你只需要实现一个具体的UnitOfWork ,所以改变将不那么痛苦。