使用微风谓词实现过滤器。使用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;
}
我正在想办法解决这个问题,但是不知道。
感谢您的帮助
在比较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");