gpt4 book ai didi

asp.net - 带复合键的 Odata v3 Web Api 导航

转载 作者:行者123 更新时间:2023-12-04 15:43:48 35 4
gpt4 key购买 nike

我有一个使用 Odata v3 的 Web Api,其中一些实体是复合键,如下所示:

public class AerodromoAdministracaoData
{
[Key]
[Column("idAerodromo", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public short IdAerodromo { get; set; }

[Key]
[Column("data", Order = 1, TypeName = "date")]
public DateTime Data { get; set; }

public virtual Aerodromo Aerodromo { get; set; }
}

我关注了 this msdn article and created a NavigationRoutingConvention .该应用程序现在可以很好地处理复合键。但是,像这样的导航链接不起作用:
http://localhost/WebApiV3/AerodromoAdministracaoData%28idAerodromo=1,data=%272014-10-24%27%29/Aerodromo

我不断收到“未找到与请求匹配的 HTTP 资源”,就好像该方法未在 Controller 中实现一样。顺便说一下,这是 Controller 方法:
    [EnableQuery]
public Aerodromo GetAerodromo([FromODataUri] short idAerodromo, [FromODataUri] DateTime data)
{
AerodromoAdministracaoData result = Store.AerodromoAdministracaoData.Find(idAerodromo, data);
if (result == null)
{
throw new HttpResponseException(new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.NotFound));
}
return result.Aerodromo;
}

found this question谈论完全相同的问题,但我还没有弄清楚如何 Nikon处理了这个问题。

最佳答案

爱德华多
来自 MSDN 文章 Support Composite Key in ASP.NET Web API OData

public class CompositeKeyRoutingConvention : EntityRoutingConvention
{
....
}
上述路由约定可以涵盖以下 Uri 模板:
  • ~/entityset/key
  • ~/entityset/key/cast

  • 但是,它不能覆盖 ~/entityset/key/navigation
    修复很简单 ,刚刚派生自 NavigationRouteConvention如下
    public class CompositeKeyRoutingConvention : NavigationRoutingConvention
    {
    ...
    }
    下面是调试信息:
    The debug information:
    请确保:如果您想同时支持两个 Uris:
  • /AerodromoAdministracaoData%28idAerodromo=1,data=%272014-10-24%27%29
  • /AerodromoAdministracaoData%28idAerodromo=1,data=%272014-10-24%27%29/Aerodromo

  • 您必须有两种自定义路由约定,一种源自 EntityRoutingConvention ,另一个来自 NavigationRoutingConvention .
    希望它能有所帮助。谢谢。

    关于asp.net - 带复合键的 Odata v3 Web Api 导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26871665/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com