2013-03-25 70 views
2

我使用新的2012.2 OData东西(Microsoft ASP.NET Web API OData)并遵循基本示例。我有一个非常基本的POCO和其正“神奇”在/ OData的通过我的MVC网站曝光:WebApi OData元数据/说明

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

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

这似乎神奇的电缆铺设工作的OData“服务”的描述文件,并调用它很好地格式化我的产品控制器作为ATOM。

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

  • 为我的实体“说明”属性(Excel的2013年数据连接向导中显示此)

  • 覆盖我的POCO的类名与用户友好名称。作为奖励,让我动态地设置这个动态。

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

谢谢!

回答

4

没有生成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); 

您使用您刚刚建立的服务模式,告诉网络API在〜/的OData /(第二个参数)暴露OData服务。

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

而关于其它两个问题,

1)是外的现成没有用于提供原子的元数据的支持。但是,您可以通过使用向OData格式化程序添加可扩展性点的夜间删除来覆盖原子元数据。有关详细信息,请参阅此answer

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

+0

非常感谢 – ProVega 2013-03-28 22:14:50