asp.net – 具有复合键的Odata v3 Web Api导航
我有一个使用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是如何处理这个问题的. 解决方法
爱德华多
来自MSDN文章Support Composite Key in ASP.NET Web API OData public class CompositeKeyRoutingConvention : EntityRoutingConvention { .... } 上述路由约定可以涵盖以下Uri模板: >?/ entityset / key 但是,它无法覆盖?/ entityset / key / navigation 修复很简单,只是从NavigationRouteConvention派生,如下所示 public class CompositeKeyRoutingConvention : NavigationRoutingConvention { ... } 以下是调试信息: 请确保:如果你想要支持Uris: > / AerodromoAdministracaoData(idAerodromo = 1,data =’2014-10-24′) 您必须有两个自定义路由约定,一个派生自EntityRoutingConvention,另一个派生自NavigationRoutingConvention. 希望它可以提供帮助.谢谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在几个网页(.cshtml文件)中使用Razor @function
- asp.net – 网站和虚拟目录之间有什么区别
- asp.net-mvc – 使用Facebook和Twitter登录ASP.NET Web API
- asp.net – Web API和Upserts
- asp.net-mvc – ASP.NET MVC授权和使用模型类的权限
- asp.net-mvc – ASP.NET MVC App中基于声明的条件编辑操作授
- asp.net – Web Api 2:“样例不可用”
- asp.net-mvc-3 – 在Asp.net MVC中为optgroup功能使用Helpe
- asp.net – BC30560:’default_aspx’在命名空间’ASP’中
- asp.net-mvc-4 – 如何通过Elastic Beanstalk手动将.NET MV