1

我有一个使用 BreezeJs 查询由 EntityFramework 和 SQL 存储支持的标准 WebApi 控制器的应用程序。当我使用 order by 子句时,我希望 NULL 和空字符串值始终排在最后(对于升序和降序)。

在 SQL 甚至 EF 服务器端,这不是一项艰巨的任务。但是,我无法找到 BreezeJs 的文档,该文档显示了如何实现这一点。

理想的解决方案是修改我的 EF 上下文的某种方式,因此这是在查询命中数据库之前检测到任何 Order By 时的默认行为。如果做不到这一点,也许我在 Breeze 本身中错过了一种方法来指定如何在结果中处理空值。

最坏的情况是,我需要在客户端编写两个单独的查询并合并结果,一个用于指定列中的值,一个用于没有值。

建议?

4

1 回答 1

1

这是个有趣的问题。

Breeze 当前有一个名为LocalQueryComparisonOptions的类,可用于控制客户端排序是否区分大小写以及字符串比较是否应符合 SQL92。这里的想法是,应该使用此类来匹配您选择的任何服务器实现使用的任何排序规则。

听起来您想要的是还可以选择完全控制查询的本地排序,可能是通过提供您自己的排序功能。如果是这种情况,请将其添加到微风用户语音并投票。这似乎很合理,如果它获得足够的选票,我认为将其添加到产品中是有意义的。

请注意,您仍然需要确保 EF(或您使用的任何后端)遵守这些相同的排序规则。

另外,出于好奇,您如何使 EF 始终以这种方式订购空值?

于 2013-02-06T20:32:03.450 回答