2009-03-04 53 views
1

在我的存儲庫中,我正在從Linq實體查詢中分配我的域對象。然後我有一個服務層來處理從存儲庫返回的這些對象。存儲庫,實體對象和域對象

我的Domain對象應該像這樣在存儲庫中嗎?還是應該將我的存儲庫限制爲實體和數據訪問,並且讓我的服務層將域分配給域對象?

做Repository中的所有賦值似乎更容易,但現在我的數據庫和域對象之間的區別並不明顯。這裏的正確做法是什麼? tia

回答

2

IMO如果應用程序相對簡單,並且您不能設想將數據訪問撕掉並在存儲庫中進行修改。但是,如果您認爲應用程序將來會變得更加複雜,或者您可能想要更改數據訪問權限,請將這些功能從存儲庫中取出。

我已經完成了應用程序的存儲庫和其他服務層中的應用程序,另一個我有一個單獨的轉換層(它不是一對一的轉換和對象是複雜的)。

要記住最佳實踐的一件事,那裏有幫助,如果它讓事情更加困難,那麼就不要使用它。

2

我曾經不喜歡它。但現在通常不會回頭。基本上,如果您需要更改爲結構不同的外部數據源,則可以設置一個新的映射以及存儲庫代碼的實現並完成它。

這是關於數據映射。檢查這個鏈接:http://www.martinfowler.com/eaaCatalog/repository.html

也檢查這個相關的問題:IRepository confusion on objects returned。我使用了一個類似的映射器,但是它已經在IQueryable級別上運行,這使得在映射後使用Domain Object時可以做一些非常有趣的事情。