2012-06-27 64 views
3

在博客圈似乎有一個共同的協議,實體框架4的一個重要特性是能夠在通用ObjectSets之上創建通用存儲庫。通用存儲庫的示例實現基本上是一個ObjectSet的包裝器,它只是翻譯方法調用。沒有有意義的邏輯在進行。經過一番思考,我已經到了自問自己的地步:通用存儲庫給我的好處是ObjectSet本身還沒有提供什麼好處? ObjectSet具有所有必需的功能(CRUD)。由於它實現了IEnumerable(甚至IQueryable),因此它提供了所有的Linq擴展,使得它可以非常容易地指定你想要的數據。通過某個IRepository進行繞道轉換是什麼理由,而不是直接簡單地使用IObjectSet作爲數據訪問層的接口?通用存儲庫與對象集

感謝和問候,

彼得。

+0

通用存儲庫帶來**沒有好處** –

+0

[通用存儲庫與EF 4.1有什麼關係](http://stackoverflow.com/questions/5625746/generic-repository-with-ef-4- 1-what-the-point) –

回答

0

實施存儲庫模式的原因是爲了讓自動化單元測試更容易模擬數據源。

如果你的模型上下文實現了一個接口(比如IRepository),並且你的業務邏輯類允許通過構造函數(依賴注入)傳遞IRepository對象,單元測試可以創建自己的IRepository數據對象並將它們傳遞給unit試驗。這意味着您可以在沒有數據庫支持的情況下進行單元測試,這比對外部數據庫測試更簡單,更可靠。

+0

'ObjectSet ' implements'IObjectSet ',我可以不使用這個接口並且實現相同嗎? – Peter