我一直在研究一种方法,通过OData和JavaScript为我的实体的数字ID字段执行模糊搜索。到目前为止,我还没有找到我正在寻找的答案。我可以使用“Startswith”过滤器选项完美地过滤其他edm.string列,但是当我尝试传入任何其他非字符串类型时,我会从服务器返回类型错误响应。OData:通配符(开头)过滤URL请求中的数字(ID)字段
在我控制数据库的应用程序中,通过创建我需要的视图并将视图的数字类型转换为字符串,我成功地解决了这个问题。但是,这似乎有点矫枉过正,因此我可以创建一整套数据视图,以便我可以允许用户通配符搜索ID,否则OData查询可以很好地工作。
有没有人找到一个很好的解决方案呢?谢谢!
谢谢您的回应!我使用自己的自定义WCF数据服务与EntityFramework和Sql Server后端。我也能够做到你上面提到的,这将工作很好,除了我然后失去了我的内联帐户的选项。我需要为我的许多应用程序显示用户的总体结果,而不需要再次调用回来以检索计数。我认为如果服务方法采用所有的常规实体查询所做的选择,那将是非常好的。这样,如果你在前端建立通用数据访问组件,你也可以使用它。 – muck41 2012-07-23 17:13:34
这似乎是我们应用程序的常见要求,因为我们为我们的内部客户编写业务应用程序,这些客户通常非常有兴趣直接查询他们要查找的订单或部件号。给他们一个模糊的搜索通常是有帮助的,因为出ID可能很大,并且他们知道它是在“8600系列”或结果中。这些搜索通常在实时过滤组件中(密钥开始搜索),因此在大型ID上使用此功能可以获得一致的用户过滤体验 – muck41 2012-07-23 17:16:36
您仍然可以在查询中使用$ inlinecount - 在我的情况下,该URL看起来像http://本地主机:59803/ScratchService.svc/FuzzySearch idStartsWith = '1' &$ inlinecount =所有页?。绝对有其他系统查询选项,你不能使用。 – 2012-07-23 20:15:13