Asp.net Asp不为oData查询生成异常

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

我正在开发一个带有oData控制器的WebApi selfhost应用程序。 我有一些基本控制器与方法得到

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