2011-12-09 79 views
4

我更喜歡創建我自己的數據庫,設置索引,唯一的約束等。從數據庫生成域模型與edmx實體框架設計器是一致的。實體框架4 DB-First依賴注入?

現在我有興趣使用依賴注入來設置一些存儲庫。我已經看過一些關於StackOverflow的文章和帖子,似乎專注於代碼優先的方法。如何創建一個通用資源庫來處理CRUD並使用依賴注入來選擇實現細節,這非常漂亮。

我想要做同樣的事情,但似乎由edmx進程生成的域模型繼承具體類而不是實現接口(ObjectContext/ObjectSet而不是IObjectContext/IObjectSet)。

有沒有人有任何資源,他們可以指示我如何在使用db-first/code generation技術時使用依賴注入?

回答

10

也許我誤解了你的問題,但EDMX生成從ObjectContext繼承的代碼的事實不會阻止你使用依賴注入。這聽起來像是擔心無法將ObjectSet注入到存儲庫中,但這不像它被設計用於的方式。

通過一個通用的存儲庫模式,如發現的一個存儲庫模式here,IRepository接口是您注入ViewModels/Controllers/Whatever的東西。

因此,您不要將IObjectContext或IObjectSet注入到您的Repository中;相反,您將IRepsoitory注入需要它的類中,並提供使用ObjectSet的IRepository接口的實現。然後,您可以模擬您的IRepository接口進行測試,或切換到完全不同的具體存儲庫實現,而不會影響其他任何代碼。

我們目前正在用EF4 DB-first和上面鏈接的存儲庫模式做同樣的事情,並且它工作得非常好。

+0

神奇的文章。希望我能早日找到它! – Sam