WebApi OData元数据/描述

时间:2013-03-25 05:20:14

标签: asp.net-mvc excel odata

我正在使用新的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吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

没有生成的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)我们现在不支持别名。所以,那里没有运气。这是我们未来计划中的首要项目之一。