实体框架导致循环引用?

时间:2011-07-14 11:21:24

标签: c# asp.net-mvc-3 entity-framework-4.1 json

我遇到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);
    }
}

非常欢迎思考和评论!

谢谢你, Alexander Brevig

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

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

有点谷歌搜索,似乎JavaScriptSerializer试图遍历你的有关系的实体框架对象扭曲。