6

在 Web Api 中返回任何结果之前,我在 EF5 中禁用了延迟加载和代理创建。一切正常。但是,当我开始对Include()其他实体进行渴望获取时,一些 JSON 对象看起来像这样:

{
$ref: "14"
},
.. correct objects ..
{
$ref: "6"
},
..

"$ref"结果列表中包含什么?

4

2 回答 2

14

它来自 JSON.NET 序列化程序。它保留了对象引用。看看following blog post。我猜你的对象图中有一些循环引用,而 JSON.NET 正在尽最大努力序列化这个 EF 结构而不会崩溃(这是大多数 JSON 序列化程序无论如何都会做的)。虽然这不是一个标准。

个人建议:永远不要序列化你的 EF 实体。始终定义视图模型并让您的 Web API 方法返回仅包含您感兴趣的属性的视图模型。

于 2013-02-04T07:38:33.273 回答
0

如果必须序列化 EF 实体,还可以禁用延迟加载。它对我有用。

转到 edmx 文件下的 context.cs 文件,并在构造函数中添加此行。

this.Configuration.LazyLoadingEnabled = false;

于 2019-08-22T14:59:22.667 回答