开发者

How to remove circular reference in Entity Framework?

The circular reference between my Customer and Order entities caused a exception during serialization. Is there any way to force EF to generate one-direction refer开发者_JAVA技巧ence between these two entities? Thanks in advance!


When I need to serialize, I generally project onto other types. This eliminates circular references, plus other data I don't want serialize. For example:

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);


I have solved this problem in EF 3.5 By changing the Child's navigation property Getter from public to Internal.


When you create an association in model designer (right click add->association) you'll get a popup windows which looks like this:

How to remove circular reference in Entity Framework?

Notice the navigation property check boxes, you can deselect them if you don't want them to be generated. To solve your circular reference problem, make sure only one or none are checked, not both.


On serverlevel:

[DataContract(IsReference = true)] 

MSDN


Watch this page I hope I could do to survive
http://msdn.microsoft.com/en-us/data/jj574232.aspx


The changing getter to internal for a child navigation worked for me with entitfy framework v5/v6 under Web API v2

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜