Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Breeze and the EdmBuilder for OData v4

I was able to create an OData (v3) service with WebApiOdata and EntityFramework at server side and Breeze at client side thanks to this document.

Now I'd like to do the same with the version 4 of OData spec. but there is a problem. The EdmBuilder class provided by Breeze depends on the 'Microsoft.Data.Edm' which is related to the version 3.

In the EdmBuilder these 2 lines prevent the project from building:

using Microsoft.Data.Edm.Csdl;
using Microsoft.Data.Edm.Validation;

which is normal, because my project has a reference to 'Microsoft.OData.Edm'(for v4) instead of 'Microsoft.Data.Edm'(for v3).

So I replaced the 2 using statements, by this:

using Microsoft.OData.Edm;
using Microsoft.OData.Edm.Csdl;
using Microsoft.OData.Edm.Validation;

Now the project can build, but at runtime it throws this exception

"Encountered the following errors when parsing the EDMX document: UnexpectedXmlElement : The element 'Edmx' was unexpected for the root element. The root element should be Edmx. : (1, 40)"

from the EdmBuilder class at this point:

using (var reader = XmlReader.Create(stream))
            {
                return EdmxReader.Parse(reader);
            }

Is there any way to solve this problem ??? like a new EdmBuilder class that I can download somewhere?

P.S.: I'm using code first migration and this code to configure OData route in the 'WebApiConfig' :

config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: "OData",
            model: EdmBuilder.GetEdm<MyDbContext>(),
            batchHandler: new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer));
like image 725
dafriskymonkey Avatar asked Jul 27 '14 16:07

dafriskymonkey


1 Answers

We are currently working on a breeze release that works with OData v 4.0. I will post back here when it is released, which should be in the fairly near future.

like image 77
Jay Traband Avatar answered Oct 14 '22 20:10

Jay Traband