2017-06-20 39 views
1

我正在製作一個帶有洋蔥體系結構的ASP.NET MVC網站。我已經實現了一個存儲庫模式,現在正在我的項目中創建一個Controller方法。這是我的架構:洋蔥體系結構:UI可以依賴於域

  1. 域:實體/域接口
  2. 庫:通用倉庫使用實體框架代碼優先(現在)
  3. 服務:通用服務調用庫
  4. MVC

現在在我的MVC項目,我需要訪問存儲庫,但根據傑弗裏巴勒莫,MVC是依賴從服務商和域名,但沒有說庫中。

我可以讓我的UI依賴Repository嗎?

因爲服務的創建依賴於Repository,所以我現在不能做任何事情而沒有依賴。我已經嘗試修改Startup.cs以不直接在我的控制器中使用Repository對象,但它仍然意味着我需要添加對Repository的引用(請參閱http://dotnetliberty.com/index.php/2015/10/15/asp-net-5-mvc6-dependency-injection-in-6-steps/

+1

此時,MVC(UI)是組合根,需要知道所有圖層才能將它們註冊到DI容器。你能否展示一些代碼來演示它是什麼導致了問題。 – Nkosi

+0

@Nkosi好的,所以我認爲可能會有pbs,但我猜不是。非常感謝! –

回答

1

此時,MVC(UI)是組合根,它需要知道所有圖層才能將其註冊到DI容器中。

經由從該層暴露的延伸部分的方法將它們註冊或間接地時的啓動要麼指實現直接。無論哪種方式,組合根需要引用所有較低層,如果它們要添加到DI容器。

控制器也應該依賴於低層抽象而不是結核。

如果將庫直接注入到控制器中,那麼我建議檢查設計,因爲這可能表明混合了責任。

+0

好的謝謝!我只需要Repos將它們作爲參數傳遞給實例化服務,我不會從控制器訪問它們的方法(我的服務負責這個)。所以如果我能在Startup中做到這一點,一切都解決了! –

相關問題