检测到具有不兼容类型的二进制运算符.找到操作数类型edm.弦和电火花.善良平等的指南

本文关键字:类型 电火花 操作数 不兼容 二进制 运算符 检测 edm | 更新日期: 2023-09-27 18:15:33

使用微风谓词实现过滤器。使用BreezeJs和ASP。. NET WebAPI(微风服务器端)与实体框架

谓词是这样的:

var predicate = breezeProvider.breeze.Predicate.create('serialNumber', '==', $scope.filter.serialNumber);
predicates.push(predicate);

执行查询时。Breeze抛出一个带有以下消息的异常:

检测到类型不兼容的二进制运算符。找到操作数类型edm。弦和电火花。kind =

scope.filter美元。serialNumber是一个字符串,serialNumber是一个GUID属性

url如下:

http://localhost: 51969/风/WarehouseProductTransactions/GetProducts吗?$filter=(StatusId ne 3d) and (WarehouseId eq 1d) and (AuthorizedADUserId eq 'bTdbnW8t6Uu4D4KHCoQOhg==' ') and (SerialNumber eq guid'1b9d065e-eb48-4f3d-883c-2c841771a3e8')&$orderby=Id&$top=5&$expand=Inventory,AuthorizedADUser&$inlinecount=allpages&)

注意代码片段:

(SerialNumber eq guid'1b9d065e-eb48-4f3d-883c-2c841771a3e8')

我的服务器端如下:

[EnableBreezeQuery(MaxNodeCount = 200)]
public IQueryable<WarehouseProductTransactionDetail> GetProducts()
{
    return _contextProvider.Context.WarehouseProductTransactionDetails;
}

我正在想办法解决这个问题,但是不知道。

感谢您的帮助

检测到具有不兼容类型的二进制运算符.找到操作数类型edm.弦和电火花.善良平等的指南

在比较Breeze查询中的userId时,我遇到了同样的问题。Breeze在OData查询中附加了'guid'。

我能够通过将.toType("entityTypeName")附加到breeze查询来解决此问题。

let query = new breeze.EntityQuery().from('orders');          
let predicate = breeze.Predicate.create("CreatedBy", "==", userId);

query = query.where(predicate).toType("Order");