Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Breeze构建了一个无效的$filter_Breeze - Fatal编程技术网

Breeze构建了一个无效的$filter

Breeze构建了一个无效的$filter,breeze,Breeze,我有一个名为Workorders的实体和一个名为WorkOrderView的实体,它们都指向数据库中的同一个表 两者都有一个名为“customerId”的字段,该字段的类型为int 查询视图并设置其where子句时: .where("customerId", "eq", "73") 它在文件中工作并生成此$filter: 但是,当我将确切的EntityQuery更改为指向表实体时,它会这样创建它: 这会导致EF由于无效的数据类型而引发错误 我的第一站是查看返回的元数据,看看BreezeCl

我有一个名为Workorders的实体和一个名为WorkOrderView的实体,它们都指向数据库中的同一个表

两者都有一个名为“customerId”的字段,该字段的类型为int

查询视图并设置其where子句时:

.where("customerId", "eq", "73")
它在文件中工作并生成此$filter:

但是,当我将确切的EntityQuery更改为指向表实体时,它会这样创建它:

这会导致EF由于无效的数据类型而引发错误

我的第一站是查看返回的元数据,看看BreezeClient是否认为它是一个字符串,但表和视图版本都是EdmInt32的数据数据类型

查看实体版本:

和表实体版本:


我错过了什么明显的东西吗?谢谢。

每当您看到类似的内容时,通常都会发现您没有向客户机提供有关EntityType的良好元数据。构造查询时,通常使用“resourceName”来指定查询的端点,breeze通过EntityType/resourceName映射(在文档中讨论)在内部将其转换为EntityType。此查找可能失败。对于breeze来说,这不一定是一个bug,因为breeze还支持不存在元数据的端点,但在这些情况下,breeze需要额外的信息

您可以在执行后转到查询并使用EntityQuery.fromEntityType属性来检查这一点(请参阅)。我猜这将返回一个匿名EntityType,而不是您所期望的“WorkOrder”类型。如果是这样,那么当breeze没有找到相关查询的EntityType时,它必须猜测filter子句的数据类型

要解决此问题,请修复导致您获取错误元数据(通常是错误的资源名称)的问题,或者使用“EntityQuery.toType”方法强制查询使用指定的EntityType。下面的链接将讨论这两个问题

关于您可能遇到的资源名称/entityType名称映射问题的讨论


谢谢Jay-今天晚些时候我会深入研究,看看能找到什么。有趣的是,数据库中的其他表似乎工作得很好。