2011-02-11 84 views
1

我只想看看封裝了CRUD方法甚至簡單擴展方法的存儲庫模式樣本。我發現它非常討厭創建我可以很容易地使用DbContext的存儲庫方法。如果理由是在DbContext和整個應用程序之間創建鬆耦合,那麼我們可以通過提取DbContext來完成接口並在整個應用程序中使用它。在應用程序中訪問DbContext是不是非常糟糕的做法?

因此,將DbContext作爲存儲庫成員訪問,比如簡單方法而不是通過存儲庫包裝它們看起來更好。你怎麼看 ?

回答

1

直接使用的DbContext業務邏輯或內部的(但願!)顯示邏輯代碼是嚴重違反了「相關分離」的原則,而且往往使你的代碼:

  • 難以維持:如果您決定重構DbContext的創建方式,您現在必須查看整個代碼庫,才能更改每個new DbContext
  • 難於進行單元測試:實體框架上下文非常難以「模擬」,而接口上的簡單存儲庫方法很容易被模擬以返回一些示例數據。
+0

我還沒有談到實例化對象。我們可以通過DI容器輕鬆實現這個問題。 – Freshblood 2011-02-11 21:16:59

4

雖然原則上我StriplingWarrior的想法基本一致,如果您正在構建您的業務層使用的DbContext屬性/方法更簡單的架構,有什麼不對的,特別是如果你正在使用的的DbContext的接口和注射它。

請記住,也可以使用IDbSet而不是DbSet來輕鬆實現。

相關問題