首页新闻招聘找找看知识库

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

0
[待解决问题]

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

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

还请园子大神们指点

地对地导弹的主页 地对地导弹 | 初学一级 | 园豆:106
提问于:2017-08-12 09:49
< >
分享
所有回答(2)
0

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

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

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

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

地对地导弹 | 园豆:106 (初学一级) | 2017-08-12 11:22

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

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

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

地对地导弹 | 园豆:106 (初学一级) | 2017-08-12 16:56

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

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

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

爱编程的大叔 | 园豆:25449 (高人七级) | 2017-08-14 09:58

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

地对地导弹 | 园豆:106 (初学一级) | 2017-08-14 10:53
0

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

Excelsior_Li | 园豆:206 (菜鸟二级) | 2017-08-18 18:36

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

地对地导弹 | 园豆:106 (初学一级) | 2017-09-06 09:51
   您需要登录以后才能回答,未注册用户请先注册