Why is the Web Api returning empty json results with “$ref=”?

风格不统一 提交于 2019-12-28 06:35:44

问题


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"
},
..

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


回答1:


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.

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.




回答2:


You can also disable lazyloading if you have to serialize your EF entities. it's worked for me.

Go to the context.cs file under your edmx file and add this Line in the constructor.

this.Configuration.LazyLoadingEnabled = false;



来源:https://stackoverflow.com/questions/14682211/why-is-the-web-api-returning-empty-json-results-with-ref

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!