在ASP.NET MVC中的UnitOfWork中转换DbContext

时间:2016-01-04 02:35:41

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4

我一直在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>();
    }
}

有人可以澄清一下我的区别吗?任何解释都将受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:3)

技术上差别不大,但界面的使用要好得多,因为你可以抽象DbContext,看看你是否需要将EF更改为另一个ORM,你只需要实现一个具体的UnitOfWork ,所以改变将不那么痛苦。