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?
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.
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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With