C# 将LINQ序列化为SQL类时出现循环引用异常
我有一组linq to sql类,并使用.NET JavaScriptSerializer将它们序列化为JSON 然而,一旦我将记录添加到相关表中,序列化就会抛出一个“循环引用异常”。啊 详细描述了它 我有几个选择C# 将LINQ序列化为SQL类时出现循环引用异常,c#,.net,json,serialization,json.net,C#,.net,Json,Serialization,Json.net,我有一组linq to sql类,并使用.NET JavaScriptSerializer将它们序列化为JSON 然而,一旦我将记录添加到相关表中,序列化就会抛出一个“循环引用异常”。啊 详细描述了它 我有几个选择 将linq转换为sql类转换为没有关系的类,从而避免循环引用 通过零关联剪断循环引用-我不认为这是一个真正的选项 使用ScriptIgnoreAttribute(以某种方式)。我不能很容易地应用它,因为属性在生成的类中,并且LINQtoSQL不会自动尊重伙伴类 使用JSON.NET
- 将linq转换为sql类转换为没有关系的类,从而避免循环引用
- 通过零关联剪断循环引用-我不认为这是一个真正的选项
- 使用ScriptIgnoreAttribute(以某种方式)。我不能很容易地应用它,因为属性在生成的类中,并且LINQtoSQL不会自动尊重伙伴类
- 使用JSON.NET并以某种方式使用attributes+buddy类来阻止序列化程序尝试遍历关系
非常感谢您的帮助最新版本的Json.NET支持序列化循环关系。在帮助中查看。有关已接受答案的附加链接
它似乎可以很好地与LINQ to SQL配合使用詹姆斯的解决方案解决了我的部分问题。我需要排除对象中的某些列表类型。为了解决我的问题,我只是复制了我需要的对象的部分。下面是一个例子
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
}) );
var DB=new DBDataContext();
var lUsers=新列表();
DB.Users.ToList().ForEach(x=>lUsers.Add(new User())
{
ID=x.ID,
FIRST\u NAME=x.FIRST\u NAME
}) );
写了一篇博客文章,详细介绍了设置: