有一个ef生成的模型实体,结构类似如下图
,我想用json序列化实现深度复制一个ef实体添加到ef中,但是在序列化A的时候,似乎一会沿着A时候序列化所有A的外键实体(运行到序列化的时候程序就超时,返回不了序列化的字符串,不继续执行下面的代码)。因为实体是从数据库生成的,因此似乎无法使用JsonIgnore特性标记属性,因为生成一次实体,就会重新生成实体代码,特性标记就会丢失。我试着设置这两个属性,但是不起作用
还请园子大神们指点
建议使用DTO
iquerable的结果用Automapper映射到相应的DTO中就不会出现你说的情况了 这种是正规的开发方式 希望对你有帮助
目前项目并没有使用DTO对象,直接用的EF的实体对象哦。
1、如果要用db-first,不要用微软自带的实体模型生成器。
2、建议Code first,你想咋整都行。
目前无法改成code first,更改模型的方式不现实
@地对地导弹: 并非更改模型,只是微软的那个生成器比较笨。
@爱编程的大叔: 生成也改不了,牵连太多的东西,目前就是看能不能通过配置json.net实现不序列化导航属性(关联实体)
@地对地导弹: 这和你题目中说的是矛盾的。
*想用json序列化实现深度复制一个ef实体添加到ef中
#看能不能通过配置json.net实现不序列化导航属性(关联实体)
@爱编程的大叔: 不矛盾,实体本身就是引用类型,如果用A1=A,那么他们指向了同一个实体,无法向EF中添加A1(EF中已经存在A),我只是要设置关联实体的复制层级,不然A1和EF中所有实体都是直接或间接关联,序列化A1就会序列化整个EF实体网络(100+表怎么办?)。所以需要指定层级,如上图的 序列化A的时候,我希望序列化到B实体就不在序列化B的关联实体了,并不需要把C、D也序列化