【问题标题】:WebApi OData Metadata / DescriptionWebApi OData 元数据/描述
【发布时间】:2013-03-25 05:20:13
【问题描述】:

我正在使用新的 2012.2 OData 东西(Microsoft ASP.NET Web API OData)并遵循基本示例。我有一个非常基本的 POCO,它通过我的 MVC 站点在 /odata 上“神奇地”公开:

    ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Job>("Products");

Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute("ODataRoute", "odata", model);

这似乎神奇地连接了 odata“服务”描述文件并调用了我的 Products 控制器,该控制器的格式很好地为 ATOM。

我的问题与 POCO、描述和元数据有关。这里发生了很多魔法,我不知道在哪里可以找到文档。我希望能够:

  • 为我的实体提供“描述”属性(Excel 2013 在数据连接向导中显示此属性)

  • 用用户友好的名称覆盖我的 POCO 的类名。作为奖励,请允许我动态设置它。

我真的不知道是什么生成了那个“/odata/magic.svc”文件,所以我不知道如何找到它的文档。这是 WebApi、OData、EntityFramework 吗?

谢谢!

【问题讨论】:

    标签: asp.net-mvc excel odata


    【解决方案1】:

    没有生成任何magic.svc。您已完成构建 OData 服务所需的 3 个步骤。详情请参阅此tutorial 和此博客post

    当你这样做时,

    DataModelBuilder modelBuilder = new ODataConventionModelBuilder();
    modelBuilder.EntitySet<Job>("Products");
    Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel();
    

    您已经为您的 OData 服务构建了 EDM model

    当你这样做时,

    config.Routes.MapODataRoute("ODataRoute", "odata", model);
    

    您正在告诉 Web API 使用您刚刚构建的服务模型在 ~/odata/(第二个参数)公开 OData 服务。

    当您尝试获取 url ~/odata/Products 时,您添加的 OData 路由知道您正在尝试访问 Products 实体集并将其路由到 ProductsController。我将尝试写一篇关于 ODataConventionModelBuilder 使用的约定和默认 OData 路由约定的博文。

    关于另外两个问题,

    1) 没有对提供原子元数据的开箱即用支持。但是,您可以通过使用为 OData 格式化程序添加可扩展性点的每晚删除来覆盖原子元数据。详情请参考answer

    2) 我们目前不支持别名。所以,那里没有运气。不过,它是我们未来计划中的首要项目之一。

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2019-03-24
      • 2021-06-14
      相关资源
      最近更新 更多