OData v4相关实体

时间:2015-02-01 12:11:34

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

我目前正在使用Mike Wasson关于启动并运行OData v4的教程(referenced here)。问题是我由于某种原因无法启动和运行相关实体。它总是返回一个无法找到路由的HTTP 404。

现在我看了herehere但这两个答案都没有编译,因为命名空间完全错误,而且自OP提出问题以来,这些方法已经有所更新。< / p>

本教程看起来似乎是为了启用以下相关实体请求:

http://localhost/odata/Suppliers(1)/Products

我需要做的就是在控制器SuppliersController

上实现以下方法
[EnableQuery]
public IQueryable<Product> GetProducts([FromODataUri] int key)
{
    return _repository.List().Where(s => s.SupplierId == key).SelectMany(s => s.Products);
}

但无论我尝试什么和拉开,这根本不起作用。特别是我错过了应该用于导航属性的任何东西,还是需要实施任何其他配置?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

所以在经历了一个寻找答案的艰苦夜晚后,我浏览了路由表,发现构建器上有以下方法:

var builder = new ODataConventionModelBuilder();

builder.EnableLowerCamelCase();

是责备......有点儿。你看,我的数据模型上的属性名称都以大写字母开头,这是.net的标准,然而,JS的驼峰是这样的,所以http://localhost/odata/Tables(1)/Messages实际上http://localhost/odata/Tables(1)/messages注意小写&#34;米&#34;关于方法

这个小问题扩展到了相关实体,它们看起来也是一样的。

在创建edm模型时,明智的话,.net尊重(因为它应该)您提供给构建器的实体集名称。如果你想确保一切都是驼峰式的,那么你最好确保你用一个小写的前导字符声明你的EntitySet。