错误的OData EntityContainer架构命名空间

时间:2012-10-19 09:22:57

标签: c# asp.net-web-api odata jaydata asp.net-web-api-odata

我正在使用ASP.NET MVC WebApi作为OData服务,我想用Jaydata查询这个OData服务。

Jaydata有一个命令行util(JaySvcUtil.exe),它可以下载服务定义($ metadata),并通过生成必要的样板代码来创建一个功能齐全的JayData / JavaScript客户端环境。

Web API + Odata正在生成此$元数据页面: https://gist.github.com/3917081#file_metadata.xml

WebApiConfig: https://gist.github.com/3917081#file_web_api_config.cs

当我跑步时

  

JaySvcUtil.exe -m http://odataserver.com:52132/api/ $ metadata -o   Scripts / test.js -n Test.Testing

它会生成这个javascript文件 https://gist.github.com/3917081#file_jaydatafile.js

问题出在生成的javascript文件中:

Default.context = new Default.Container( { name:'oData', oDataServiceHost: 'http://servername:52132/api' });

命名空间=“默认”,因为$ metadata页面中包含以下值。

Schema Namespace="Default" xmlns="http://schemas.microsoft.com/ado/2009/11/edm"

如何在$ metadata页面中更改此命名空间值或将其删除?

1 个答案:

答案 0 :(得分:4)

它在odata nightly build中得到了支持。 http://aspnetwebstack.codeplex.com/discussions/353867

将软件包升级到最新签名的版本后。您可以在模型构建器上更改名称空间。

    private static IEdmModel GetEdmModel()
    {
        ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
        modelBuilder.Namespace = "xxx";
        modelBuilder.EntitySet<ProductionOrder>("ProductionOrders");
        return modelBuilder.GetEdmModel();
    }
相关问题