0

我已經以下列方式使用的回購模式在我的web應用形式庫模式窗體

UI層:

它包含在其中的控件被綁定文件後面的代碼和像INSERT,UPDATE,等用戶動作照顧

UI層調用

庫層:

它包含的存儲庫的類繼承GenericRepo:IGeneric

數據層:

它包含EF產生域類

層是嚴格的即時界面即UI層調用Repo層,並依次調用數據層來獲取數據。

問題:

現在的問題IM面是,例如,如果我需要Products.aspx頁面上的產品清單,我需要做一些事情像

IProductRepo pr = new ProductRepo(); 

IList<Products> lstProducts = pr.GetAll(); 

我不想加入將數據層引用到UI層以便訪問由EF生成的域實體,例如由EF

生成的選項是什麼?請引導我走向正確的道路

關於。

回答

1

在我看來你錯過了一層。我會這樣構建它:

UI    | 
-----    | 
**Domain**  | Domain classes 
-----    | 
DAL (Repository) | 

這樣,你的邏輯是在一個單獨的層,你的DAL是完全隱藏你的邏輯和領域模型。

解決此問題的另一種方法是使用依賴注入。這樣你可以定義一些接口,只保留對接口的引用。通過依賴容器,可以將這些引用綁定到實際類型。

我的首選DI容器例如Ninject

+0

TNX你的時間,你可以解釋差異的B/W'Domain'和'領域Classes'我應該在Domain層? – dakait 2013-05-10 22:05:08

+0

域層將是您的'服務',這是協調UI,域類和DAL之間事務的類。 – Kenneth 2013-05-10 22:20:30