【问题标题】:OData v4 Related EntitiesOData v4 相关实体
【发布时间】:2015-02-01 12:11:34
【问题描述】:

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

现在我查看了 herehere 但这两个答案都没有编译,因为命名空间都是错误的,并且自从 OP 提出问题以来,方法已经有所更新。

教程使它看起来像是为了启用以下相关实体请求:

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);
}

但是,无论我尝试做什么,这根本行不通。他们是否有任何我错过的特别需要为导航属性放置的东西,或者是否有任何额外的配置需要放置?

非常感谢任何帮助。

【问题讨论】:

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


    【解决方案1】:

    于是在苦苦寻找答案的一夜之后,我翻遍了路由表,发现builder上的方法如下:

    var builder = new ODataConventionModelBuilder();
    
    builder.EnableLowerCamelCase();
    

    应该归咎于...有点。你看,我的数据模型上的属性名称都以大写字母开头,这是 .net 的标准,但是,JS 它的驼峰式大小写所以http://localhost/odata/Tables(1)/Messages 实际上是http://localhost/odata/Tables(1)/messages 注意方法上的小写“m”

    这个小问题延伸到相关实体,它们看起来被以同样的方式对待。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      相关资源
      最近更新 更多