【问题标题】:Breeze and the EdmBuilder for OData v4Breeze 和适用于 OData v4 的 EdmBuilder
【发布时间】:2014-07-27 16:52:39
【问题描述】:

感谢document,我能够在服务器端使用 WebApiOdata 和 EntityFramework 创建 OData (v3) 服务,并在客户端创建 Breeze。

现在我想对 OData 规范的第 4 版做同样的事情。但有一个问题。 Breeze 提供的EdmBuilder 类依赖于与版本 3 相关的“Microsoft.Data.Edm”。

EdmBuilder 中,这两行阻止了项目的构建:

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

这很正常,因为我的项目引用了“Microsoft.OData.Edm”(适用于 v4)而不是“Microsoft.Data.Edm”(适用于 v3)。

所以我用这个替换了 2 个 using 语句:

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

现在项目可以构建了,但是在运行时它会抛出这个异常

"解析EDMX文档时遇到如下错误: UnexpectedXmlElement :元素“Edmx”对于根来说是意外的 元素。根元素应该是 Edmx。 : (1, 40)"

此时来自EdmBuilder 类:

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

有没有办法解决这个问题???像我可以在某处下载的新 EdmBuilder 课程?

P.S.:我使用代码优先迁移和此代码在“WebApiConfig”中配置 OData 路由:

config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: "OData",
            model: EdmBuilder.GetEdm<MyDbContext>(),
            batchHandler: new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer));

【问题讨论】:

    标签: asp.net entity-framework asp.net-web-api odata breeze


    【解决方案1】:

    我们目前正在开发适用于 OData v 4.0 的轻量版。我会在它发布时回到这里,这应该是在不久的将来。

    【讨论】:

    • 如果 EdmBuilder 能够像 ODataCoventionBuilder 那样支持添加 EntitySet 而不仅仅是采用 DbContext,我会非常喜欢它。我不使用 EF,因为我们是基于存储过程的。
    • 在我的 V3 项目中,我刚刚更新了“microsoft.aspnet.webapi.odata”(对于 5.1.2 版)库,我很惊讶地看到 ODataConventionModelBuilder 工作得很好.我像这样注册我的 OData 路由:ODataConventionModelBuilder builder = new ODataConventionModelBuilder();builder.EntitySet&lt;Product&gt;("Products");config.Routes.MapODataRoute(routeName: "odata",routePrefix: "odata",model: builder.GetEdmModel(),batchHandler: new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer)); 现在我没有收到“406 不可接受”错误!所以不需要微风 emdbuilder?!
    • 有人可以证实这一点,因为它似乎工作得很好吗?请注意,没有命名空间配置。
    • @dafriskymonkey 我正在使用 angular.breeze 和 OData v4 获得Metadata query failed
    • @FlorianF。我的 v4 项目也有同样的问题,它是“DataJs”问题,允许的最大版本是 v3。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多