How to remove circular reference in Entity Framework?

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

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

Add association window

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.


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