首页 技术 正文
技术 2022年11月10日
0 收藏 558 点赞 2,133 浏览 663 个字

本次学习用的数据库,如下

MVC系列学习(九)-DTO的使用

1.什么是DTO:DataTransferObject

即数据传输对象,服务端的客户端的通信,自动定义个小的实体类,里面只包含我们需要传输的属性

2.不用DTO会有什么问题

a.在用JavaScriptSerializer时,会报错

原因:Teacher实体中有外键实体TeachClass,而TeachClass中又有一个Teacher的集合属性,然后会一直循环的查询,出现死循环

MVC系列学习(九)-DTO的使用

b.使用json返回数据时,会出错

MVC系列学习(九)-DTO的使用

MVC系列学习(九)-DTO的使用

3.使用DTO解决问题

现在问题:

在序列化Teacher对象时,会去找外键实体TeachClass;而去找TeachClass对象时,又会重新找Teacher,一直到循环。

MVC系列学习(九)-DTO的使用

开始解决:

a.定义DTO类,解决死循环

我们可以定义个新的TeachClass类,它里面不包含会引起死循环的属性,即没有ICollection<Teacher>属性。此处我们也对Teacher重新声明一个类。

MVC系列学习(九)-DTO的使用

b.定义部分类,方便添加额外方法

死循环问题就这么解决了,这就是DTO,简单吧。接下来,我们可能很多地方要用到序列化,那我们为了方便,直接在类的内部定义一个方法,自己序列化自己。但是问题又来了,因为实体类是EF生成的,每次我们点击保存,EF就会按照tt模板和xml配置信息,重新初始化类,我们写的方法就白写了。这个时候,我们想到了部分类,在部分类中一个序列化该类的方法。

MVC系列学习(九)-DTO的使用

有个主意事项,因为EF在找类时是根据文件名来找,所以此处的类名 不能与 类文件名相同

MVC系列学习(九)-DTO的使用

c.开始使用自己定义的DTO类

发现下载程序正常运行,未报任何异常,搞定

MVC系列学习(九)-DTO的使用

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,156
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,624
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,468
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,240
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,877
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,043