2016-04-08 49 views
0

我有一個4層(項目)解決方案。如何在4層項目中使用MVC域模型?

  1. 實體框架層(EFL)
  2. 數據訪問層(DLL):所有的CRUD操作和查詢。
  3. 業務邏輯層(BLL):調用DLL方法並向它們添加一些業務。
  4. MVC層

正如我說我有一個單獨的EFL層和因爲這個我不知道我怎樣才能在MVC中使用的模型好處?例如我無法在EFL圖層中編寫驗證註釋,如<required><Display(Name:="username:")>,因爲如果我再次從數據庫生成模型,可能會刪除它們。即使我這樣做我如何使用MVC的Model文件夾?

如果我創建了一些與EFL類相同的類,我需要編寫一大堆代碼將這些類轉換爲對方。

作爲什麼結構我可以使用MVC模型?並將它們與實體框架類相結合?

+0

是的,你需要在模型文件夾中編寫模型類 – Dilip

回答

1

MVC中的M對我來說是視圖模型。這意味着它包含您的視圖中使用的實體(這些實體已針對這些視圖進行了優化);它們是基於從業務層接收的實體在控制器中構建的,並且可能看起來與視圖模型實體完全不同。

1

想想下面的問題:

  • 的可能性有多大,你就會改變EF一些其他持久性/ ORM機制?
  • 您可能會改變或希望添加其他前端技術的可能性有多大?

如果您的答案是可能發生這些更改,那麼您需要隔離特定於框架的內容。你可以通過一系列具有框架中立概念的基類來實現,然後根據需要添加或刪除特定於框架的派生類。例如。 EfCustomerHibernateCustomerRepository

如果這些變化不太可能,那麼我會質疑分層方法實際提供的價值,我不會太在意使用框架特定的概念來裝飾類。我的目標是讓事情儘可能簡單和乾爽。

相關問題