为什么Web Api返回空的json结果为“$ ref =”?

时间:2013-02-04 07:34:24

标签: .net json asp.net-mvc-4 asp.net-web-api

我在EF5中禁用了延迟加载和代理创建,然后在Web Api中返回任何结果。一切都很好。但是,当我开始Include()其他实体进行急切提取时,一些JSON对象看起来像这样:

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

这个"$ref"包含在结果列表中的是什么?

2 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:0)

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

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

this.Configuration.LazyLoadingEnabled = false;