2011-02-15 33 views
1

我有一個非常簡單的數據庫,包含5個表格,PK和關係設置等。我也有一個ASP.net MVC3項目用於創建簡單的Web服務使用post/get將JSON/XML提供給移動應用程序。爲了訪問我的數據,我使用了一個ADO.net實體模型類來處理實體的生成等。如何從ADO.net模型動態創建動態數據傳輸對象

由於ADO.net實體模型中自動生成關係創建的序列化/循環引用的問題,我不得不創建「​​數據傳輸對象」來刪除不需要傳輸的關係和數據。

問題1:是否有更簡單的方法使用實體框架本身創建DTO? IE,只指定我想要轉換爲JsonResults的實體屬性?如果我可以幫助,我不希望使用任何第三方框架。

問題2:實體框架的一個側面問題,例如我在解決方案中的一個項目中創建一個ADO.net實體模型。因爲該模型依賴於項目A中指定的數據庫的連接,項目B可以以某種方式使用該模型和類似的連接?兩個項目都在同一個解決方案中。

謝謝!

回答

4

我已經被迫創建「數據傳輸對象」去除不需要傳輸的關係和數據。

你認爲這是不好的?恰恰相反,正確設計的ASP.NET MVC應用程序應該如何工作:它應該使用視圖模型。不僅適用於返回JSON的操作,還適用於所有操作。您應該避免將您的EF模型傳遞給視圖。觀點不應該知道EF的存在。視圖模型是專門爲滿足視圖要求而設計的類。因此,控制器查詢存儲庫以獲取模型(EF),將其映射到視圖模型並將其傳遞到視圖以顯示。爲了簡化模型和視圖模型之間的映射,您可以使用AutoMapper

+0

謝謝Darin,我只是想驗證我做的是否正確。你們好棒! – Richard 2011-02-15 18:42:20

1

RE:問題2:ObjectContext構造函數被重載以獲取各種EntityConnection和連接字符串。重載之一應該讓你在你需要的地方。

+0

謝謝Echo !!!!!這非常有幫助。 – Richard 2011-02-15 18:44:15