asp.net-mvc - WebApi OData 元数据/描述

标签 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“服务”描述文件并调用我的产品 Controller ,该 Controller 的格式很好地为 ATOM。

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

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

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

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

谢谢!

最佳答案

没有生成 magic.svc。您已完成构建 OData 服务所需的 3 个步骤。引用这个tutorial和这个博客post了解详情。

当你这样做时,

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

您已经构建了 EDM model用于您的 OData 服务。

当你这样做时,

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

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

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

关于另外两个问题,

1) 对于提供原子元数据没有开箱即用的支持。但是,您可以通过使用为 OData 格式化程序添加可扩展性点的夜间删除来覆盖原子元数据。引用这个answer了解详情。

2) 我们现在不支持别名。所以,没有运气。不过,这是我们 future 计划中的首要项目之一。

关于asp.net-mvc - WebApi OData 元数据/描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15608151/

相关文章:

javascript - 将参数传递给 jQuery 删除按钮单击事件处理程序

python - (Excel) 访问 CodeModule 时 VBA 崩溃

OData 与 $expand 不起作用

asp.net-mvc - MVC3 设计 - 存储库模式和服务层

css - css 文件的动态加载在 IE 中不起作用

asp.net-mvc - asp.net mvc 4 通过按钮从 Controller 调用方法

c# - 我可以使用 OleDbConnection Excel ACE 驱动程序从不可搜索的 System.IO.Stream 而不是文件中读取 Excel 文件吗?

jquery - JQGRID:在 Excel 上实现撤消的任何简单方法,例如 jqGrid 实现

wcf - OData 是否违反关注点分离?

c# - Web API 2 OData错误消息作为XML返回