2009-09-23 50 views
7

我有一組linq to sql類,並使用.NET JavaScriptSerializer將它們序列化爲JSON。序列化LINQ to SQL類時的循環引用異常

然而,當我記錄添加到相關表,系列化拋出一個「循環引用異常」。 Aaarggh!

它詳細描述here

我有幾個選項

  • 轉換的LINQ to SQL的類,一類因而沒有關係,避免循環引用
  • 剪斷由歸零協會循環引用 - 我不認爲這成爲一個真正的選項
  • 使用ScriptIgnoreAttribute(莫名其妙)。我是不會輕易將此因爲屬性中生成的類和LINQ to SQL不自動履行哥們類
  • 使用JSON.NET並以某種方式使用屬性+哥們類停止串行試圖跨越的關係走。

有沒有其他人遇到過嗎?如果可能的話,我真的更喜歡最後一個選項,但我不知道如何做到這一點。

任何幫助都不勝感激

回答

8

最新版本的Json.NET支持序列化循環關係。在幫助中查看Preserving Object References

+2

寫了詳細設置的博客文章:http://www.johnnycode.com/blog/2012/04/10/serializing-circular-references-with-json-net-and-entity-framework/ – 2012-04-11 13:16:15

1

詹姆斯的解決方案解決了我的問題的一部分。我需要排除對象中的某些列表類型。爲了解決我的問題,我只複製了我需要的對象的部分。以下是一個例子。

var DB = new DBDataContext(); 
      var lUsers = new List<User>(); 
      DB.Users.ToList().ForEach(x => lUsers.Add(new User() 
       { 
        ID = x.ID, 
        FIRST_NAME = x.FIRST_NAME 
       }));