我的客户和订单实体之间的循环引用在序列化期间导致异常。有没有办法强制EF在这两个实体之间生成单向引用?提前谢谢!
答案 0 :(得分:13)
当我需要序列化时,我通常会投射到其他类型。这消除了循环引用,以及我不想序列化的其他数据。例如:
var q = (from c in Repository.Customers()
where c.Id == id
select new
{
Name = c.Name,
Orders = from o in C.Orders
select new
{
Date = o.Date
}
}).First();
return Json(q);
答案 1 :(得分:5)
在模型设计器中创建关联时(右键单击add-> association),您将看到一个如下所示的弹出窗口:
Add association window http://i45.tinypic.com/xmoqcp.jpg
请注意导航属性复选框,如果不希望生成它们,可以取消选中它们。要解决循环引用问题,请确保只选中一个或不选中,而不是两个。
答案 2 :(得分:5)
我已经在EF 3.5中解决了这个问题,将Child的导航属性Getter从public更改为Internal。
答案 3 :(得分:1)
答案 4 :(得分:0)
观看此页面 我希望我能为生存而努力 http://msdn.microsoft.com/en-us/data/jj574232.aspx
答案 5 :(得分:0)
使用Web API v2下的有权框架v5 / v6,为子导航更改内部的getter工作