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

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

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

这里详细描述。

我有几个选择

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

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

任何帮助是极大的赞赏

最新版本的Json.NET支持序列化循环关系。 在帮助中查看保留对象引用 。

接受答案的其他链接

Json.NET帮助,保留对象引用(带示例)

它似乎适用于LINQ to SQL

詹姆斯的解决方案解决了我的部分问题。 我需要在对象中排除某些List类型。 为了解决我的问题,我只是复制了我需要的对象部分。 以下是一个例子。

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