我遇到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
答案 0 :(得分:0)
我遇到了同样的问题。
有点谷歌搜索,似乎JavaScriptSerializer试图遍历你的有关系的实体框架对象扭曲。