首页 新闻 会员 周边

如何设置json.net序列化层级

0
[已解决问题] 解决于 2018-06-30 15:47

有一个ef生成的模型实体,结构类似如下图

,我想用json序列化实现深度复制一个ef实体添加到ef中,但是在序列化A的时候,似乎一会沿着A时候序列化所有A的外键实体(运行到序列化的时候程序就超时,返回不了序列化的字符串,不继续执行下面的代码)。因为实体是从数据库生成的,因此似乎无法使用JsonIgnore特性标记属性,因为生成一次实体,就会重新生成实体代码,特性标记就会丢失。我试着设置这两个属性,但是不起作用

还请园子大神们指点

地对地捣蛋的大号的主页 地对地捣蛋的大号 | 初学一级 | 园豆:106
提问于:2017-08-12 09:49
< >
分享
最佳答案
0

建议使用DTO
iquerable的结果用Automapper映射到相应的DTO中就不会出现你说的情况了 这种是正规的开发方式 希望对你有帮助

奖励园豆:5
Excelsior_Li | 菜鸟二级 |园豆:211 | 2017-08-18 18:36

 目前项目并没有使用DTO对象,直接用的EF的实体对象哦。

地对地捣蛋的大号 | 园豆:106 (初学一级) | 2017-09-06 09:51
其他回答(1)
0

1、如果要用db-first,不要用微软自带的实体模型生成器。

2、建议Code first,你想咋整都行。

爱编程的大叔 | 园豆:30839 (高人七级) | 2017-08-12 11:11

目前无法改成code first,更改模型的方式不现实

支持(0) 反对(0) 地对地捣蛋的大号 | 园豆:106 (初学一级) | 2017-08-12 11:22

@地对地导弹: 并非更改模型,只是微软的那个生成器比较笨。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2017-08-12 12:23

@爱编程的大叔: 生成也改不了,牵连太多的东西,目前就是看能不能通过配置json.net实现不序列化导航属性(关联实体)

支持(0) 反对(0) 地对地捣蛋的大号 | 园豆:106 (初学一级) | 2017-08-12 16:56

@地对地导弹: 这和你题目中说的是矛盾的。

*想用json序列化实现深度复制一个ef实体添加到ef中

#看能不能通过配置json.net实现不序列化导航属性(关联实体)

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2017-08-14 09:58

@爱编程的大叔: 不矛盾,实体本身就是引用类型,如果用A1=A,那么他们指向了同一个实体,无法向EF中添加A1(EF中已经存在A),我只是要设置关联实体的复制层级,不然A1和EF中所有实体都是直接或间接关联,序列化A1就会序列化整个EF实体网络(100+表怎么办?)。所以需要指定层级,如上图的 序列化A的时候,我希望序列化到B实体就不在序列化B的关联实体了,并不需要把C、D也序列化

支持(0) 反对(0) 地对地捣蛋的大号 | 园豆:106 (初学一级) | 2017-08-14 10:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册