为什么网络阿比返回空的JSON结果与" $ REF ="?阿比、结果、网络、JSON

2023-09-04 00:12:35 作者:七个字的

我禁用延迟加载和代理创造EF5返回任何结果在Web API之前。一切运行良好。但是,当我开始包括()其他实体预先抓取,一些JSON对象是这样的:

I disabled lazy loading and proxy creation in EF5 before returning any results in the Web Api. Everything worked fine. However, when i start to Include() other entities for eager fetching, some of the JSON objects look like this:

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

这是什么$ REF这是包含在结果列表中?

What is this "$ref" that gets included in the list of results?

推荐答案

这是一个从JSON.NET串行到来。这是preserving对象引用。看看的following博客文章 。我猜你有一些循环引用您的对象图,并JSON.NET是干什么的,最好在绝望的努力没有崩溃(这是大多数JSON序列化会做反正)序列化此EF结构。这不是一个标准,但。

It's coming from the JSON.NET serializer. It's preserving object references. Take a look at the following blog post. I guess you have some circular references in your object graph and JSON.NET is doing it's best in a desperate effort to serialize this EF structure without crashing (which is what most JSON serializers would do anyway). It's not a standard though.

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

Personal advice: never serialize your EF entities. Always define view models and have your Web API methods return view models containing only the properties you are interested in.