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序列化对象一直没问题,包括对象下面包括集合属性,都可以很好的序列化出来。不知道这个为什么一直报错“集合已修改”,困扰好久,恳请各位解答!
通过ManagerFactory 创建出来的对象 是不是有被共享使用,导致集合被修改呢
没有啊,那个对象没有被做过任何的修改
@初学者心态:你可以下载Newtonsoft.Json的源码,引用一下,然后调试一下,看在那throw的,再跟大伙说说
@Yu: 嗯,等我忙完手头的这点试试,谢谢
微软这个好像就是这样,不能实现对象你引用我,我引用你转成Json,只有再写个Poco类,把virtual导航去了,或者不要相互引用。
“把virtual导航去了”是什么意思呢?
你实际的数据中真正可能不需要这样子的定义。所以你可简化一下。不要硬闯
实际需要的数据确实不多,这个通过得到的这个对象的一些需要的属性赋值给新的对象再转成json,但是我就是想知道为什么会出现这样的错误