2010-11-29 58 views
0

我有一個模型EDMX模型和正在使用POCO這樣的序列化:有一個循環引用,而使用Controller.Json()方法

public class ContactPerson 
    { 
     public virtual Guid ContactPersonId { get; set; } 
     public virtual string FullName { get; set; }  
     public virtual Guid PositionId { get; set; } 
     public virtual DateTime Birthday { get; set; }  
     public virtual Position Position { get; set; } 
      } 

public class Position 
    { 
     public virtual Guid PositionId { get; set; } 
     public virtual string Name { get; set; } 
     public virtual ICollection<ContactPerson> ContactPersons { get; set; } 
    } 

當我嘗試使用JSON()方法來序列from a in _context.Positions select a,它檢測一個循環參考。我相信這是因爲Position對ContactPersons集合的引用,並且ContactPerson同時具有對Position的引用。

問題很明顯,該怎麼辦?

回答

2

嘗試在ContactPerson.Position屬性中使用ScriptIgnoreAttribute。它會說JavaScriptSerializer不會序列化該屬性,並且會打破循環引用。

+0

很好了解這個屬性(因此+1),但我發現你必須包含System.Web.Script.Serialization才能使用這個屬性。 op的庫(很像我的)是POCO(Plain Old C#/ CLR Objects),並且添加對上述庫的引用將打破該概念。 – Mayo 2010-12-06 15:33:52