我使用breeze谓词实现过滤器。使用带有实体框架的BreezeJs和ASP.NET WebAPI(Breeze服务器端)
谓词看起来像这样:
var predicate = breezeProvider.breeze.Predicate.create('serialNumber', '==', $scope.filter.serialNumber);
predicates.push(predicate);

当我执行查询时。 Breeze使用以下消息抛出异常:
检测到具有不兼容类型的二元运算符。找到操作数类型edm.string和edm.guid for kind equal
$ scope.filter.serialNumber是一个字符串,serialNumber是一个GUID属性
网址如下。
http://localhost:51969/breeze/WarehouseProductTransactions/GetProducts?$ filter =(StatusId ne 3d)和(WarehouseId eq 1d)和(AuthorizedADUserId eq' bTdbnW8t6Uu4D4KHCoQOhg ==')和(SerialNumber eq guid' 1b9d065e-eb48 -4f3d-883C-2c841771a3e8')及$的OrderBy =编号&安培; $顶部= 5&安培; $扩大=库存,AuthorizedADUser&安培; $ inlinecount =所有页&安培;)
请注意代码段:
(SerialNumber eq guid' 1b9d065e-eb48-4f3d-883c-2c841771a3e8')
我的服务器端如下:
[EnableBreezeQuery(MaxNodeCount = 200)]
public IQueryable<WarehouseProductTransactionDetail> GetProducts()
{
return _contextProvider.Context.WarehouseProductTransactionDetails;
}
我试图弄清楚如何解决这种情况,但不知道。
感谢任何帮助
答案 0 :(得分:6)
在Breeze查询中比较userId时遇到了同样的问题。 Breeze在OData查询中附加'guid'。
我可以通过将.toType("entityTypeName")
附加到微风查询来解决此问题。
let query = new breeze.EntityQuery().from('orders');
let predicate = breeze.Predicate.create("CreatedBy", "==", userId);
query = query.where(predicate).toType("Order");