2

我想知道在存储库基类中使用实体框架代码第一个ctp 5 IDbSet是否有意义。我正在使用存储库模式(并希望遵循持久性无知方法)为我的实现,我想使用假数据进行测试(通过使用内存IDBset实现中的假)。使用RepositoryBase类中的IDbSet的实体框架代码第一个ctp 5

我觉得添加一个依赖到 System.Data.Entity.IDbSet会将我的存储库基类的实现绑定到IDBset,并且如果将来有任何更改可能会破坏代码。实现没有Idbset依赖关系的存储库基类的最佳方式是什么?

我关注此文章:EF CTP4 Tips & Tricks: Testing With Fake DbContext实施假货。

//_dbset impliments the IDBset 

//Database inherits from DbContext 

    protected RepositoryBase(UnitOfWork unitOfWork) 
    { 
     _unitOfWork = unitOfWork; 
     _dbset = _unitOfWork.Database.Set<T>(); 
    }  

    public virtual void Add(T entity) 
    { 
     _dbset.Add(entity); 
    } 

    public virtual void Delete(T entity) 
    { 
     _dbset.Remove(entity); 
    } 

    public virtual T GetById(long id) 
    { 
     return _dbset.Find(id); 
    } 

    public virtual IEnumerable<T> All() 
    { 
     return _dbset.ToList(); 
    } 
+0

+1的链接,“测试用假的DbContext”。正是我在找什么! – 2011-05-04 21:02:07

回答

2

这是存储库的一个要点,以包装对映射层的依赖关系。所以在你的情况下,你将依赖于EF CTP5和IDbSet - 这是正确的。这是一个正确的方法。如果你想测试你的代码,你会为例如:

  • 模拟整个仓库时,单元测试上层
  • 使用集成测试混凝土仓库
+0

谢谢你,这对我来说很有意义。 – kwiri 2011-03-14 13:32:36

相关问题