2012-07-27 88 views
3

我從一個非常類似於:Domain Entities, DTO, and View Models的點開始。將域模型映射到查看模型

建議使用DTO在域模型和MVC的ViewModel之間進行映射似乎是一致的期望。我想了解如何將領域模型(基於實體框架的項目)與WebAPI mvc項目聯繫起來。

我從一個簡單的POCOs(由EF PowerTools生成,用於反向工程設計我的現有數據庫)的項目開始,我想要連接到MVC4 WebAPI項目。

隨着我的解決方案的發展,我希望我將業務邏輯添加到基線POCO項目中,這也許是這個問題的關鍵。將POCO轉換爲可映射到MVC項目的業務邏輯。

究竟如何將這些項目連接在一起,以便我可以在知道EF項目實體的MVC項目中開始創建控制器? Automapper?我們可以指向使用Automapper的這個特定功能的帖子/文檔嗎?

回答

1

你不想讓控制器知道EF實體 - 這就是這一點。 :)

你自己說應該使用DTO將你的域映射到你的視圖模型,然後你問「我怎樣才能使我的域模型與mvc控制器橋接?」。你已經用DTO回答了這個問題!

DTO充當複雜業務對象和用於顯示特定視圖的模型之間的傳輸層。這兩種方法都有特殊要求,並不嚴格涉及「公正數據」 - 因此使用DTO會給您更大的解耦和關注點分離。

如果您沒有將域與視圖模型分離,您將被迫直接引用您的視圖模型代碼中的EF對象,從而暴露出不必要的數據和函數「上鍊」。

現在,如果您使用WebAPI作爲發送數據的方式,那麼我認爲您通常可以放棄發送DTO,因爲WebAPI數據通常不會實現視圖模型邏輯。但是,YMMV當然取決於你打算如何使用你的控制器。

對於AutoMapper我會說這是最好的開始與自己的文檔(他們甚至使用DTO的例子在其中):多http://github.com/AutoMapper/AutoMapper/wiki/Getting-started

+0

謝謝 - 你點幫助添加另一層我的理解,我做了它過去你好世界的水平 - 讚賞。 – justSteve 2012-07-29 12:14:20

+1

這對我也很有用....謝謝。 – Snesh 2014-01-08 06:00:20