首页 新闻 会员 周边 捐助

JsonConvert.SerializeObject序列化对象成json,出现错误“ 集合已修改;可能无法执行枚举操作”,中间未对对象做任何修改

0
悬赏园豆:100 [待解决问题]
 1 Model.TestSchme testSchme = ManagerFactory.testSchmeSrv.Get(int.Parse(hd_recId.Value.ToString()));
 2 
 3                 return Newtonsoft.Json.JsonConvert.SerializeObject(new
 4                 {
 5                     TestSchmeName = testSchme.TestSchmeName,
 6                     BeginDate = testSchme.BeginDate,
 7                     EndDate = testSchme.EndDate,
 8                     Interval = testSchme.Interval,
 9                     ExecuteCycle = testSchme.ExecuteCycle,
10                     Content = testSchme.Content,
11                     IsInDoor = testSchme.IsInDoor,
12                     IndoorPicFileName = testSchme.IndoorPicFileName,
13                     TestClassifys = testSchme.TestClassifys
14                 });

在最后一个TestClassifys属性赋值的时候出错,把最后一个数值的操作去掉的时候就可以序列化了。

TestClassifys 是testSchme的一个集合属性,他们都是数据库实体,他们之间是多对一的关系。同时
TestClassifys是一个父类,下面还有10个子类。以前利用Newtonsoft序列化对象一直没问题,包括对象下面包括集合属性,都可以很好的序列化出来。不知道这个为什么一直报错“集合已修改”,困扰好久,恳请各位解答!
初学者心态的主页 初学者心态 | 初学一级 | 园豆:104
提问于:2014-03-18 16:25
< >
分享
所有回答(3)
0

通过ManagerFactory 创建出来的对象 是不是有被共享使用,导致集合被修改呢

Yu | 园豆:12990 (专家六级) | 2014-03-18 17:02

没有啊,那个对象没有被做过任何的修改

支持(0) 反对(0) 初学者心态 | 园豆:104 (初学一级) | 2014-03-19 09:27

@初学者心态:你可以下载Newtonsoft.Json的源码,引用一下,然后调试一下,看在那throw的,再跟大伙说说

支持(0) 反对(0) Yu | 园豆:12990 (专家六级) | 2014-03-19 09:58

@Yu: 嗯,等我忙完手头的这点试试,谢谢

支持(0) 反对(0) 初学者心态 | 园豆:104 (初学一级) | 2014-03-19 10:20
0

微软这个好像就是这样,不能实现对象你引用我,我引用你转成Json,只有再写个Poco类,把virtual导航去了,或者不要相互引用。

happydaily | 园豆:260 (菜鸟二级) | 2014-03-18 17:53

“把virtual导航去了”是什么意思呢?

支持(0) 反对(0) 初学者心态 | 园豆:104 (初学一级) | 2014-03-19 09:29
1

你实际的数据中真正可能不需要这样子的定义。所以你可简化一下。不要硬闯

[秦时明月] | 园豆:738 (小虾三级) | 2014-03-19 09:20

实际需要的数据确实不多,这个通过得到的这个对象的一些需要的属性赋值给新的对象再转成json,但是我就是想知道为什么会出现这样的错误

支持(0) 反对(0) 初学者心态 | 园豆:104 (初学一级) | 2014-03-19 09:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册