我有一个应用程序利用BreezeJs查询由EntityFramework和SQL商店支持的标准WebApi控制器。当我使用order by子句时,我希望NULL和空字符串值总是最后排序(对于BOTH升序和降序)。
在SQL甚至EF服务器端,这不是一项艰巨的任务。但是,我无法找到BreezeJs的文档,它显示了如何实现这一目标。
理想的解决方案是修改我的EF上下文的一些方法,因此这是在查询命中数据库之前检测到任何Order By时的默认行为。如果做不到这一点,也许我在Breeze中错过了一种方法来指定结果中如何处理空值。
最糟糕的情况是,我需要在客户端编写两个单独的查询并合并结果,一个用于with,一个没有指定列中的值。
建议?
答案 0 :(得分:1)
这是一个有趣的问题。
Breeze目前有一个名为 LocalQueryComparisonOptions 的类,可用于控制客户端排序是否区分大小写以及字符串比较是否应符合SQL92。这里的想法是,该类应该用于匹配您选择的任何服务器实现所使用的任何排序规则。
听起来你想要的是也可以选择完全控制查询的本地排序,可能是通过提供你自己的排序功能。如果是这种情况,请将其添加到微风User Voice并投票支持。这似乎非常合理,如果获得足够的票数,我认为将它添加到产品中是有意义的。
请注意,您仍需要确保EF(或您正在使用的任何后端)遵守这些相同的排序规则。
另外,出于好奇,你怎么让EF总是以这种方式命令空?