gpt4 book ai didi

c# - json.net;序列化 Entity Framework 对象(循环引用错误)

转载 作者:可可西里 更新时间:2023-11-01 08:01:45 25 4
gpt4 key购买 nike

我有一个 Entity Framework 实体,我想将其序列化为 json 对象。我环顾四周,发现 json.net (http://james.newtonking.com/projects/json-net.aspx) 应该能够“开箱即用”地序列化带有循环引用的对象。所以我尝试使用

string json = JsonConvert.SerializeObject(/* my ef entity */);

但我仍然遇到同样的错误。问题可能是我需要使用 ReferenceLoopHandling.IgnoreContractResolver,但我不确定如何使用它们。任何帮助深表感谢!谢谢

最佳答案

为了解决这个问题,我将我的实体转换为基于 POCO 的代码优先。为此,请在您的 edmx 窗口中右键单击并选择:

添加代码生成项 > 代码选项卡 > EF POCO 实体生成器。

请注意,如果您没有看到它,您可能需要使用 nuget 安装它。

然而,在运行时,EF 会向这些对象添加代理类以用于跟踪目的,但它们往往会扰乱序列化过程。为了防止这种情况,我们可以简单地将 ProxyCreationEnabled 设置为 false,如下所示:

var context = new YourEntities();
context.Configuration.ProxyCreationEnabled = false;

var results = context.YourEntity.Take(100).ToList();

然后您可以通过省略默认引用循环来安全地返回 JSON.NET 序列化数据,如下所示:

return JsonConvert.SerializeObject(results, Formatting.Indented, 
new JsonSerializerSettings {
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});

关于c# - json.net;序列化 Entity Framework 对象(循环引用错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com