gpt4 book ai didi

asp.net-web-api - 没有 Entity Framework 的 Web Api 和 Odata

转载 作者:行者123 更新时间:2023-12-02 20:34:17 25 4
gpt4 key购买 nike

当底层数据不是来自 Entity Framework 时,我无法让 OData 与 Asp.Net Web Api 一起使用。

我正在使用最新的 OData Nuget 包(Microsoft ASP.NET Web API OData 0.2.0-alpha 版本),但是当我尝试传递 OData 查询时(例如 $top= 10) 我收到错误:

The given key was not present in the dictionary

如果我不发送 OData 查询,我可以很好地调用该方法。同一 Web Api 项目中使用 Entity Framework 的其他方法可以很好地处理 OData 查询。不起作用的是使用 Subsonic ORM 查询底层 AS400 数据源。它返回一个 IQueryable。在 VS 2012 和 .NET 4.5 RTM 发布并且 OData 被移动到单独的包中之前,这种方法运行得很好。 (即使用 VS2012 和 .NET 4.5 的 Beta 版和 RC 版)

任何想法将不胜感激。

最佳答案

我猜这个问题是由稳定排序引起的,它与底层查询提供程序不能很好地配合。能把错误的调用堆栈放出来确认一下吗?

此版本中 OData 查询组合的一个重大变化是,它在获取顶级项目之前确保稳定的排序。这样做的原因是用户可能有随机数据源,这使得返回数据不断变化。

Web api odata 包的做法是在执行 top 之前添加 OrderyBy [Keys] 查询。或者,如果模型中没有定义键(键是 ID、EntityID 或 [Key] 属性属性),它将使用模型中的所有原始属性进行排序。

如果你能确保数据源始终返回顺序稳定的数据,你可以通过代码关闭此功能:

[Queryable(EnsureStableOrdering = false)]

关于asp.net-web-api - 没有 Entity Framework 的 Web Api 和 Odata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13459345/

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