LINQ to SQL类序列化时的循环引用异常

时间:2009-09-23 21:24:12

标签: c# .net json serialization json.net

我有一组linq to sql类,并使用.NET JavaScriptSerializer将它们序列化为JSON。

但是,只要我将记录添加到相关表中,序列化就会抛出“循环引用异常”。 Aaarggh!

详细描述了here

我有几个选择

  • 将linq转换为sql类,使其无关系,从而避免使用循环引用
  • 通过归零关联来剪切循环引用 - 我不认为这是一个真正的选项
  • 使用ScriptIgnoreAttribute(不知何故)。我无法轻松应用它,因为属性在生成的类中,LINQ to SQL不会自动遵循好友类
  • 使用JSON.NET并以某种方式使用属性+伙伴类来阻止序列化程序尝试跨越关系。

还有其他人遇到过这个吗?如果可能的话,我真的更喜欢最后一个选项,但我不知道该怎么做。

非常感谢任何帮助

3 个答案:

答案 0 :(得分:8)

最新版本的Json.NET支持序列化循环关系。查看帮助中的Preserving Object References

答案 1 :(得分:4)

接受回答的其他链接

Json.NET Help, Preserving Object References (with example)

它似乎适用于LINQ to SQL

答案 2 :(得分: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
                }) );