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

jinianjun 2014-03-17 05:24:13
对象为直接从数据库获取
  Model.TestSchme testSchme = ManagerFactory.testSchmeSrv.Get(int.Parse(hd_TestSchme.Value.ToString()));
return Newtonsoft.Json.JsonConvert.SerializeObject(testSchme);

序列化的时候便报这个错。但是当我把该对象的其中一个集合属性赋值为null的时候,就可以序列化了。
testSchme.WorkOrder = null;

可是该对象是一个数据库实体,关联的其他实体很多,集合对象也很多,我总不能一个个的赋值为nill吧,何况还有我本身需要的集合实体。
请问这其中的原因是什么,困扰我好几天了
...全文
1385 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinianjun 2014-03-18
  • 打赏
  • 举报
回复
引用 6 楼 feiyun0112 的回复:
是不是用了LazyLoad, 用Include一起加载
是用了LazyLoad的,可是LazyLoad为false的时候还是这样。另外,怎么用Include一起加载呢?没接触过
jinianjun 2014-03-18
  • 打赏
  • 举报
回复
引用 5 楼 webdiyer 的回复:
引用 4 楼 jinianjun 的回复:
[quote=引用 3 楼 webdiyer 的回复:] Get方法这后用ToList或ToArray转为list或array试试
testSchme是一个单独的实体,不能够ToList或ToArray转为list或array啊
给你那个WorkerOrder属性加上JsonIgnore呢?[/quote]我用了下面这种方式,还是报错
Model.TestSchme testSchme = ManagerFactory.testSchmeSrv.Get(int.Parse(hd_recId.Value.ToString()));
               
                return JSON.Serialize(new
                {
                    TestSchmeName = testSchme.TestSchmeName,
                    BeginDate = testSchme.BeginDate,
                    EndDate = testSchme.EndDate,
                    Interval = testSchme.Interval,
                    ExecuteCycle = testSchme.ExecuteCycle,
                    Content = testSchme.Content,
                    IsInDoor = testSchme.IsInDoor,
                    IndoorPicFileName = testSchme.IndoorPicFileName,
                    TestClassifys = testSchme.TestClassifys
                });
但是去掉最后的那个集合属性estClassifys = testSchme.TestClassifys就可以序列化了 看来不是
feiyun0112 2014-03-18
  • 打赏
  • 举报
回复
是不是用了LazyLoad, 用Include一起加载
webdiyer 2014-03-18
  • 打赏
  • 举报
回复
引用 4 楼 jinianjun 的回复:
引用 3 楼 webdiyer 的回复:
Get方法这后用ToList或ToArray转为list或array试试
testSchme是一个单独的实体,不能够ToList或ToArray转为list或array啊
给你那个WorkerOrder属性加上JsonIgnore呢?
jinianjun 2014-03-18
  • 打赏
  • 举报
回复
引用 3 楼 webdiyer 的回复:
Get方法这后用ToList或ToArray转为list或array试试
testSchme是一个单独的实体,不能够ToList或ToArray转为list或array啊
webdiyer 2014-03-18
  • 打赏
  • 举报
回复
Get方法这后用ToList或ToArray转为list或array试试
jinianjun 2014-03-18
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
看WorkOrder 是怎么赋值的,是不是访问testSchme.WorkOrder 才从数据库取数据 ***************************************************************************** 签名档: http://feiyun0112.cnblogs.com/
是的,WorkOrder是testSchme的一个属性,他们之间是一对多的关系。
jinianjun 2014-03-18
  • 打赏
  • 举报
回复
引用 3 楼 webdiyer 的回复:
Get方法这后用ToList或ToArray转为list或array试试
不行啊,毫无作用啊,还是需要从根本找原因,看是什么引起这个问题的
feiyun0112 2014-03-17
  • 打赏
  • 举报
回复
看WorkOrder 是怎么赋值的,是不是访问testSchme.WorkOrder 才从数据库取数据

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧