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