序列化 LINQ to SQL 类时出现循环引用异常
-
13-09-2019 - |
题
我有一组 linq to sql 类,并使用 .NET JavaScriptSerializer 将它们序列化为 JSON。
但是,一旦我将记录添加到相关表中,序列化就会引发“循环引用异常”。啊啊啊!
描述得很详细 这里.
我有几个选择
- 将 linq to sql 类转换为没有关系的类,从而避免循环引用
- 通过清零关联来剪断循环引用 - 我不认为这是一个真正的选择
- 使用 ScriptIgnoreAttribute (以某种方式)。我无法轻松应用此功能,因为属性位于生成的类中,并且 LINQ to SQL 不会自动支持好友类
- 使用 JSON.NET 并以某种方式使用属性 + 好友类来阻止序列化器尝试遍历关系。
有人遇到过这种情况么?如果可能的话,我真的更喜欢最后一个选项,但我不知道该怎么做。
任何帮助是极大的赞赏
解决方案
最新版本的 Json.NET 支持序列化循环关系。查看 保留对象引用 在帮助中。
其他提示
詹姆斯的解决方案解决了我的部分问题。我需要排除对象内的某些列表类型。为了解决我的问题,我只是复制了我需要的对象的部分。下面是一个例子。
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
}) );
不隶属于 StackOverflow