实体框架导致循环引用?

Posted

技术标签:

【中文标题】实体框架导致循环引用?【英文标题】:Entity Framework causes circular references? 【发布时间】:2011-07-14 11:21:24 【问题描述】:

我遇到了 EF Code First 问题,它抱怨生成的代理中存在循环引用。也许我们有一个约定冲突导致 EF 动态创建循环引用?数据集在直接传递给 JSON 序列化程序时不会产生错误。

/* Assume all dependencies and namespaces are referenced and used */

///the base object
public class A 
    [Key]
    public int AId  set; get; 

    //the tree
    public B MyB  set; get; 


//the tree nodes
public class B 
    [Key]
    public int BId  set; get; 
    public int AId  set; get; 
    public int ParendId  set; get; 
    public virtual ICollection<B> Children  set; get; 


///the context
public class ABContext : DbContext 
    public DbSet<A> As  set; get; 
    public DbSet<B> Bs  set; get; 


///later in a controller...
[HttpGet]
public JsonResult Get(string sid)

    int id = int.Parse(sid);
    using (ABContext abc = new ABContext()) 
        A a = abc.As.Where(i=>i.AId==id).Single();
        return Json(a, JsonRequestBehavior.AllowGet);
    

欢迎大家多多交流!

谢谢你, 亚历山大·布雷维格

【问题讨论】:

你的树节点有循环引用吗?并尝试将 ParendId 设为可为空的 int 【参考方案1】:

我遇到了同样的问题。

http://garfbradazweb.wordpress.com/2011/09/22/mvc-3-entity-framework-and-serializing-jsoncircular-references/

用谷歌搜索了一下,似乎 javascriptSerializer 在尝试遍历具有关系的实体框架对象时遇到了麻烦。

【讨论】:

以上是关于实体框架导致循环引用?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架中的多对多关系导致无限循环

检测到实体框架自引用循环[重复]

检测到实体框架自引用循环

如何处理循环引用 - 或 - 在 WCF 服务中返回的第一级子项下的引用暴露实体框架数据模型?

如何在不违反主键约束的情况下插入具有循环引用的实体框架

EF实体类,设置导航属性,导致序列化时出现"循环引用"错误,及序列化时间格式解决方案