2010-04-12 192 views
1

嗨,我已經被賦予了使用實體框架4創建N-Teir網站的任務,並且我正在面對一些磚牆,可能在我的知識面前。實體框架4網站架構

我的計劃,到目前爲止是有這層

網站(應用層),
什麼我打電話Name.Framework(BLL),
Name.Data(DAL),
名稱。實體(包含POCO類和網站/ BLL使用其他結構類,
Name.Common(實用類)

我試圖使用的存儲庫類,但我在努力做的事情工作,我怎麼想,他們會以下是我陷入困境的幾個例子 上。

如果我想使用.include()這將在我的倉庫或這是業務層的責任? (並且我不知道這將如何在BLL中工作)

.Order()相同的問題?據我瞭解,這需要存儲在倉庫中,或者至少以某種方式進入倉庫?!?

我是否應該使用BLL將上下文傳遞到存儲庫/數據層?在我從數據層獲得實體的時候,任何沒有在回購中引用的導航屬性都會返回'對象上下文處置',業務層是否應該保持上下文等等,以避免這種情況發生?

或總結這個幫助!

由於項目負責人想知道我們是否要繼續使用實體框架,或者在內部遷移到NHibernate,我們需要在明天(eek!)有某種順序。

感謝任何幫助或建議 馬特

回答

1

尋找類似的東西我自己,我發現this。目前沒有看太多,但看起來很有希望。

1

我目前正在與一個Web業餘愛好項目EF4代碼只是,在那裏我有以下結構([名]是我的項目的名稱):

  • [名]名.web - 一個ASP.NET MVC 2項目
  • [名] .Web.Models - 自定義視圖模型,從我的實體AutoMapper映射的對象以及
  • [名] .Models - 我的POCO類和reposito的接口裏斯
  • [名] .DataAccess - 與數據訪問相關的一些接口,例如IUnitOfWork
  • [名] .DataAccess.EF - 所有實體框架相關的類和接口

我也有一個測試項目對於上面的每一個,再加上一些帶有助手和測試擴展的項目。

可能有必要提一下這個愛好項目的一部分目的是讓我學習如何使用EF4和我自己選擇的一些設計模式(在這個項目中涉及EF的是存儲庫模式和工作單元模式)。另一個部分目的是建立一個代碼庫,我可以在以後的項目中重複使用,這影響了我的應用程序之間的項目劃分 - 例如,如果我不關心重用,我可能會在一個項目中擁有所有與數據訪問相關的類,而不是兩個。