I\'m having yet another issues with navigation properties but this time my configuration is WCF Data Service + EF.
Basically the metadata looks good, I have the referent
Ok, FINALLY it's working :) I am now using the latest commit of breezejs on github and this fixed my problem. In my opinion breeze via WCF never worked until now with ODATA2. The ODATA specification is clear about that:
The only way I could get it to work before using the github version of breezejs, was by specifying MAX_DATA_SERVICE_VERSION to 1.0 in datajs.
Anyway, that's all good now. I can't wait for the breeze release :) By the way it's likely I'm going to ditch OpenAccess for NHibernate. Is the NH WebAPI controller as complete as the EF WebAPI controller ?
Are you using the "WebApi" dataservice adapter or the "OData" data service adapter? In general, you should be using the "webApi" dataservice adapter unless you are explicitly exposing your data via OData. The "webApi" adapter is the default so I'd try just removing any "initializeAdapterReference" calls that mention "OData".
As a follow up, the issue is just that:
-with classic ODATA service, navigation properties are embedded in an object called 'results'.
:
Whereas with WebAPI service, navigation properties are just an array.
Then at some point in breeze code there's the following test:
// needed if what is returned is not an array and we expect one - this happens with __deferred in OData.
if (!Array.isArray(relatedRawEntities)) return null;
and in the case of classic ODATA service, it obviously returns null and navigation property is not populated.
I don't know how to make myself any clearer than that. It does not look like a problem with my metadata, but more like a bug in breeze.
Can you confirm that what I'm saying makes sense ? Can we do something about that ?