序列化类型为“****”的对象时检测到循环引用。
2011-10-18 09:44
477 查看
问题:
2个类:MetaSet和MetaObject,为1:N的关系。
在Asp.net mvc2.0下,返回Json数据时,出现“序列化类型为“DataCenter.Core.Domain.MetaSet”的对象时检测到循环引用。”
Mvc代码如下:
数据操作代码如下:
原因:
在MVC里面返回一个json对象的数据,在这个过程中将我们找到的这条数据进行序列化为json对象的一个过程。在这个过程的时候,由于这个对象有映射 关系,那么它在序列化MetaSet对象的时候会序列化该对象的属性MetaObject对象,而这个属性MetaObject对象又有属性MetaSet对象,依次反复。就导致了这个问题的产生。
解决方案:
规避json序列化的时候直接序列化该MetaSet对象,改为序列化不带这种映射关系的对象;
参考:
http://archive.cnblogs.com/a/1956117/
2个类:MetaSet和MetaObject,为1:N的关系。
在Asp.net mvc2.0下,返回Json数据时,出现“序列化类型为“DataCenter.Core.Domain.MetaSet”的对象时检测到循环引用。”
Mvc代码如下:
IList<MetaSet> sets = new List<MetaSet>(); sets = _metaSetRepository.GetMetaSetByParentTreeCodeID(treeCodeID, CheckState.yes); if (Request.IsAjaxRequest()) { return new JsonResult { Data =sets, JsonRequestBehavior= JsonRequestBehavior.AllowGet }; }
数据操作代码如下:
public IList<MetaSet> GetMetaSetByParentTreeCodeID(string treeCodeID, CheckState state) { var query = Session.CreateQuery(@" select m from MetaSet m where m.TreeCode like :treecodeid and m.IsDelete=False and m.CheckState=:checkState order by m.TreeCode asc") .SetString("treecodeid", treeCodeID + "%").SetEnum("checkState", state); return query.List<MetaSet>(); }
原因:
在MVC里面返回一个json对象的数据,在这个过程中将我们找到的这条数据进行序列化为json对象的一个过程。在这个过程的时候,由于这个对象有映射 关系,那么它在序列化MetaSet对象的时候会序列化该对象的属性MetaObject对象,而这个属性MetaObject对象又有属性MetaSet对象,依次反复。就导致了这个问题的产生。
解决方案:
规避json序列化的时候直接序列化该MetaSet对象,改为序列化不带这种映射关系的对象;
public IList<MetaSet> GetMetaSetByParentTreeCodeID2(string treeCodeID, CheckState state) { var query = Session.CreateQuery(@" select new MetaSet(m.MetaSetID,m.Name,m.ParentID,m.ControllerAction) from MetaSet m where m.TreeCode like :treecodeid and m.IsDelete=False and m.CheckState=:checkState order by m.TreeCode asc") .SetString("treecodeid", treeCodeID + "%").SetEnum("checkState", state); return query.List<MetaSet>(); }
参考:
http://archive.cnblogs.com/a/1956117/
相关文章推荐
- 使用json序列化类型为“ajax学习.DataSetComment+T_CommentDataTable”的对象时检测到循环引用。
- EntityFramework 序列化类型为XX的对象时检测到循环引用
- 序列化类型的对象时检测到循环引用
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- 序列化类型为XX的对象时检测到循环引用
- EF提示“序列化类型为XXX的对象时检测到循环引用”(转载)
- MVC EF异常-“序列化类型为 XX 的对象时检测到循环引用”
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- ADO.NET 实体数据模型 异常-“序列化类型为 XX 的对象时检测到循环引用”
- 序列化类型为XX的对象时检测到循环引用
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- ajax调用webservice返回DataTable "序列化类型为“System.Reflection.Module”的对象时检测到循环引用
- 序列化类型为XX的对象时检测到循环引用
- 序列化类型为“System.Reflection.RuntimeModule”的对象时检测到循环引用
- ADO.NET 实体数据模型 异常-“序列化类型为 XX 的对象时检测到循环引用”
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- 使用json序列化类型为“ajax学习.DataSetComment+T_CommentDataTable”的对象时检测到循环引用。
- 序列化类型为"xx”的对象时检测到循环引用。
- 序列化类型为“System.Data.Entity.DynamicProxies.ActionInfo_”的对象时检测到循环引用。