程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> MVC系列學習(九)-DTO的使用,mvc系列學習-dto

MVC系列學習(九)-DTO的使用,mvc系列學習-dto

編輯:C#入門知識

MVC系列學習(九)-DTO的使用,mvc系列學習-dto


本次學習用的數據庫,如下

即數據傳輸對象,服務端的客戶端的通信,自動定義個小的實體類,裡面只包含我們需要傳輸的屬性

2.不用DTO會有什麼問題

a.在用JavaScriptSerializer時,會報錯

原因:Teacher實體中有外鍵實體TeachClass,而TeachClass中又有一個Teacher的集合屬性,然後會一直循環的查詢,出現死循環

在序列化Teacher對象時,會去找外鍵實體TeachClass;而去找TeachClass對象時,又會重新找Teacher,一直到循環。

image

開始解決:

a.定義DTO類,解決死循環

我們可以定義個新的TeachClass類,它裡面不包含會引起死循環的屬性,即沒有ICollection<Teacher>屬性。此處我們也對Teacher重新聲明一個類。

image

b.定義部分類,方便添加額外方法

死循環問題就這麼解決了,這就是DTO,簡單吧。接下來,我們可能很多地方要用到序列化,那我們為了方便,直接在類的內部定義一個方法,自己序列化自己。但是問題又來了,因為實體類是EF生成的,每次我們點擊保存,EF就會按照tt模板和xml配置信息,重新初始化類,我們寫的方法就白寫了。這個時候,我們想到了部分類,在部分類中一個序列化該類的方法。

image

有個主意事項,因為EF在找類時是根據文件名來找,所以此處的類名 不能與 類文件名相同

image

c.開始使用自己定義的DTO類

發現下載程序正常運行,未報任何異常,搞定

image

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved