Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将LINQ序列化为SQL类时出现循环引用异常_C#_.net_Json_Serialization_Json.net - Fatal编程技术网

C# 将LINQ序列化为SQL类时出现循环引用异常

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 to sql类,并使用.NET JavaScriptSerializer将它们序列化为JSON

然而,一旦我将记录添加到相关表中,序列化就会抛出一个“循环引用异常”。啊

详细描述了它

我有几个选择

  • 将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
}) );

写了一篇博客文章,详细介绍了设置: