Asp.net Asp不为oData查询生成异常
我正在开发一个带有oData控制器的WebApi selfhost应用程序。 我有一些基本控制器与方法得到Asp.net Asp不为oData查询生成异常,asp.net,odata,asp.net-web-api,self-hosting,Asp.net,Odata,Asp.net Web Api,Self Hosting,我正在开发一个带有oData控制器的WebApi selfhost应用程序。 我有一些基本控制器与方法得到 public class ODataControllerBaseClientFilter<T> : ODataControllerBase<T> where T : class, IClientId, new() { public ODataControllerBaseClientFilter(IDataService<T> se
public class ODataControllerBaseClientFilter<T> : ODataControllerBase<T> where T : class, IClientId, new()
{
public ODataControllerBaseClientFilter(IDataService<T> service) : base(service)
{
}
public override IQueryable<T> Get(string query = null)
{
var a = base.Get(query).ToArray();
return base.Get(query);
}
}
EF将生成异常并将错误正确返回给客户端
但若我删除这一行并只返回iQuerieble对象,那个么在客户端将并没有任何异常和结果!我如何解决这个问题
UPD:错误的文本
{无法确定类型的复合主键顺序
“Lk.Search.Data.Models.ReportClient”。使用ColumnAttribute请参见
还是哈斯基方法
请参见以指定
复合主键的顺序。}
UPD2:我使用jQueryAjax从oData服务获取数据进行测试,我只使用来自浏览器的get请求,实际上数组试图执行查询,导致错误浮出水面。IQueryable还没有被强制尝试一个查询,所以还没有要报告的错误-但是IQueryable在客户端没有任何实际价值。没错。但是asp.net在某个地方执行这个查询,序列化并返回到客户端。但在这种情况下,请在帖子中添加错误文本。调用序列化时,它会在查询结束时抛出错误,根据调用Web服务的方式,客户端有几种方法可以捕获错误消息,例如:在jquery ajax中,您可以在fail fallback中获取错误消息。
var a = base.Get(query).ToArray();