【发布时间】:2015-01-08 09:38:19
【问题描述】:
我有一个使用 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 资源”,就好像该方法未在控制器中实现一样。顺便说一下,这是控制器方法:
[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 是如何处理这个问题的。
【问题讨论】:
标签: asp.net asp.net-web-api odata composite-key