BreezeJS 1.3.1打破了我的十进制过滤器&data.inlineCount在我的查询中返回

BreezeJS 1.3.1 breaks my decimal filter & data.inlineCount return in my query

本文关键字:我的 inlineCount data 查询 返回 amp 过滤器 BreezeJS 十进制      更新时间:2023-09-26

当我过滤一个十进制列('Amount')时,我会得到一个解析错误:

Unable to parse: Amount eq 45d

我的客户端构建的api url是:

http://localhost:49800/breeze/BreezeDb/Orders?$filter=Amount%20eq%2045d

url看起来很好,但服务器没有处理"d"后缀——如果我删除它,查询就可以正常工作。DocCode中的类似查询工作正常。

是什么原因造成的?为什么解析器不能处理预期的后缀?

编辑我的js代码是:

query = EntityQuery.from('Orders').where('amount', 'eq', 45);

我使用浏览器开发工具看到了上面的url。我没有在-freede.js上加d后缀,这看起来是故意的(DataType.Double用DataType.makeFloatFmt调用)

编辑2然后我注意到我的data.inlineCount也不起作用。它现在返回undefined。所以我决定回去看看&当这些功能发挥作用时。因此,微风1.3.0两个小数&data.inlineCount运行正常。但是1.3.1如上所述,它们失败了。

与1.3.1发行说明相反,我仍然可以看到X-InlineCount属性被设置为正确的数字,但它不在响应中。

经过大量工作(调试Breeze.WebApi 1.3.0 vs 1.3.1),我发现这是由遗留的ODataActionFilter没有处理新客户端Breeze.js代码引起的。

我使用遗留版本的唯一原因是,我错过了0.78.3版本(2012年12月20日)关于将BreezeController类atttibutes从[JsonFormatter,ODataActionFilter]更改为[BreezeController]的说明。

将我的BreezeController类atttibutes更改为[BreezeController],一切正常!