Breeze构建了一个无效的$ filter

时间:2015-04-21 16:37:41

标签: breeze

我有一个名为Workorders的实体和一个名为WorkordersView的实体 - 都指向数据库中的同一个表。

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

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

.where("customerId", "eq", "73")

它工作文件并产生这个$ filter:

enter image description here

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

enter image description here

由于数据类型无效,导致EF抛出错误。

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

查看实体版本:

enter image description here

和表实体版本:

enter image description here

我错过了一些明显的东西吗?谢谢。

1 个答案:

答案 0 :(得分:0)

任何时候你看到这样的东西,通常是一个很好的选择,你没有得到客户端有问题的EntityType的良好元数据。构造查询时,通常使用'resourceName'来指定查询的端点,breeze通过EntityType / ResourceName映射在内部将其转换为EntityType(在文档中讨论)。这种查找很可能失败了。这不一定是微风的错误,因为breeze还支持没有元数据的端点,但在这些情况下,微风需要额外的信息。

您可以通过在执行后转到查询并使用EntityQuery.fromEntityType属性来检查这一点(请参阅http://www.breezejs.com/sites/all/apidocs/classes/EntityQuery.html#property_fromEntityType)。我的猜测是,这将返回一个匿名的EntityType而不是您期望的“WorkOrder”类型。如果是这样,那么正在发生的事情是,当breeze没有找到有问题的查询的EntityType时,它必须猜测filter子句的数据类型。

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

http://www.getbreezenow.com/documentation/query-result-debugging

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

http://www.getbreezenow.com/documentation/query-from

相关问题