2009-08-26 113 views
1

我在寫一個使用實體框架的新應用程序。實體框架的最佳實踐?

EF在哪裏?我目前的想法是將它隔離在DataAccess程序集中,該程序集公開了許多存儲庫(實際上是包裝EF)。

然後,我會創建自己的Domain對象並將它們傳遞給將它們映射到EntityFramework實體(我將其視爲DAO)的存儲庫。

這種方法的問題是我需要做的映射量,即使對於較小的域模型也是如此。

我也很喜歡Repository.GetAll(Func<TDomainObj, bool> filter)方法來檢索項的過濾數,但我需要的功能轉換採取DAO來代替:

Func<**TDomainObj**, bool> filter --->

Func<**TEntityFrameworkObj**, bool> filter 

不知道我怎麼能做到這一點?如果我只在儲存庫上允許Func<TEntityFrameworkObj, bool>,則調用者必須知道約System.Data.Objects

我開始覺得我應該只是幾個應用程序,以EF和使用他們的System.Data.Objects作爲我的模型....

期待您的意見/評論,

大衛

回答

0

我們將EF封裝在服務層後面。服務層公開DTO對象。我們將EF對象映射到代碼中的DTO對象。

在某些情況下,我們通過模板進行獲取,這與您正在做的相似。我們在哪裏發送對象,例如客戶,並找回所有看起來像我們發送的客戶。