我目前正在使用Mike Wasson关于启动并运行OData v4的教程(referenced here)。问题是我由于某种原因无法启动和运行相关实体。它总是返回一个无法找到路由的HTTP 404。
现在我看了here和here但这两个答案都没有编译,因为命名空间完全错误,而且自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);
}
但无论我尝试什么和拉开,这根本不起作用。特别是我错过了应该用于导航属性的任何东西,还是需要实施任何其他配置?
非常感谢任何帮助。
答案 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。