关于EntityFramework一对多或一对一双向关系的循环引用问题

gaosam 2014-03-13 09:44:50
假设
A中包含一个B的导航集合 IList<B>
B中包含一个A的导航实体 A

经过一番配置之后,
在查询A的时候,可以看到A中的导航集合IList<B>已经包含了相应的外键数据
展开这个IList<B>,可以看到里面每个B里包含的A也已经填充了数据,

但是问题是。。。。

当展开上面这个B中的导航实体A的时候,发现A中的IList<B>仍然有数据,
如果我们再展开这个IList<B>,会看见上面的情况再次出现。

就是说:我中有你,你中有我,你中的我还有你。。。。。如此不断循环。。
...全文
1427 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kiddkyd 2014-04-05
  • 打赏
  • 举报
回复
你要的答案在这里 http://www.cnblogs.com/Gryzor/ 或者这个 http://hi.baidu.com/wokao100000/item/1f965bc27a96e611b77a2421
feiyun0112 2014-04-04
  • 打赏
  • 举报
回复
你可以建个新Model,通过automapping映射你需要的字段,再序列化出去
gaosam 2014-03-28
  • 打赏
  • 举报
回复
我用的json工具确实是Newtonsoft.Json,可以用JsonIgnoreAttribute属性。 但是这样是否会出现一个问题。。 如果我给B中的导航属性A加上忽略。 这样序列化A的时候,A中的IList<B>里,每个B确实没了A的导航实体 但是在序列化B的时候,B中的A就没了。而这个时候,我希望是B中包含A,而不包括A中的IList<B> 这时候,不可能我再去给A中的IList<B>也写个忽略。。 因为这样的话,在序列化A的时候,就带不出IList<B>了。。。。 我试过,在查询出需要的数据的时候,用循环,对不需要的导航属性设置为null, 这样确实可以解决。但是这样好像很SB的样子。。。。
feiyun0112 2014-03-26
  • 打赏
  • 举报
回复
Model对应的字段属性上加JsonIgnoreAttribute,,具体Attribute看你用的哪种json序列化工具
gaosam 2014-03-26
  • 打赏
  • 举报
回复
ignore属性是哪里加?
feiyun0112 2014-03-13
  • 打赏
  • 举报
回复
加ignore属性忽略掉,具体看你用的那种json序列化工具
gaosam 2014-03-13
  • 打赏
  • 举报
回复
原来是这样。。。 主要是这种循环引用,会导致转json的时候出错。。。。。
feiyun0112 2014-03-13
  • 打赏
  • 举报
回复
有什么问题?引用的是地址

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
gaosam 2014-03-13
  • 打赏
  • 举报
回复
。。噢。。补充一下,是CodeFirst。。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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