2008-10-11 86 views
5

所以我們正在建設一個構建解耦N層應用程序,實體框架和VB.NET

  • UI層(網絡,移動,Ajax客戶端等)
  • 服務/ API層的應用
  • 業務邏輯層
  • 數據訪問層

我們的目標是有從下到DAL服務層實體框架的依賴。這意味着服務層將只接受和返回POCO(普通的舊CLR對象)。

我們目前正在做的是手動編碼服務層和業務邏輯層之間的映射層,該層將POCO轉換爲EF實體,反之亦然。

所以總之,頁面有窗體,窗體有表單內容的代碼隱藏,將它們填充到一個POCO中,並將它發送到服務層。服務層轉換爲EF實體,將其發送到業務邏輯層,後者對實體執行某些轉換,然後與DAL交互以保持它。

是的,它有點繁瑣,但我們想知道是否有更好的方法嗎?

是的,我知道有人發佈了一個EF Poco適配器,但它都在C#中,我們更喜歡VB.NET解決方案。

,因爲我們已經深入到我們的開發週期,所以切換到NHibernate是最後的選擇。

回答

2

您應該對POCO執行業務邏輯。 ORM的全部目的是它是一個實現細節。業務邏輯應該在域模型和域服務中實現 - 在業務應用程序中,「域」意味着「業務」。 DAL應該在那裏採取POCO並堅持下去 - 就你而言,這意味着將其映射到並堅持EF實體。

無論如何,這就是理論/ NHibernate模型。