Breeze:使用具有十进制数据类型的谓词

时间:2014-02-14 12:19:50

标签: odata breeze

我正在尝试使用十进制数据类型创建Predicate,但是我收到以下错误:

Error retrieving data.A binary operator with incompatible types was detected. 
Found operand types 'Edm.Decimal' and 'Edm.Double' for operator kind 'Equal'. 
Error: A binary operator with incompatible types was detected. Found operand types   
'Edm.Decimal' and 'Edm.Double' for operator kind 'Equal'.

以下是我正在尝试的代码:

// engineSize equals 1.4 in this case.
predicate.create('engineLitreCapacity', '==', engineSize);

3 个答案:

答案 0 :(得分:2)

我有同样的问题。我发现了这个错误:)...我认为在与元数据和REST服务控制器签名相关的命名约定中有些事情:例如:

不能工作

    /*Breeze Controller Server Side*/
        [HttpGet]
            public IQueryable<Product> Items()
            {
                return _contextProvider.Context.Products;
            }

   /*Client*/ 
    query = breeze.EntityQuery
                         .from("Items")
                         .where(Predicate.create('BasePrice', >', 1)
                         .orderBy(sortString)
                         .select(selectData)
                         .skip(skip)
                         .take(take)
                         .inlineCount();

它&#39;工作!!

/*Breeze Controller Server Side*/
 [HttpGet]
    public IQueryable<Product> Products()
    {
        return _contextProvider.Context.Products;
    }

 /*Client*/ 
 query = breeze.EntityQuery
                 .from("Products")
                 .where(Predicate.create('BasePrice', >', 1)
                 .orderBy(sortString)
                 .select(selectData)
                 .skip(skip)
                 .take(take)
                 .inlineCount();

答案 1 :(得分:1)

您需要parseFloat engineSize

predicate.create('engineLitreCapacity', '==', parseFloat(engineSize));

答案 2 :(得分:1)

'engineLitreCapacity'的元数据中的数据类型是什么,它是否与数据库中相同字段的数据类型匹配?如果没有,您的元数据是如何通过FetchMetadata调用初始化的,还是手工创建的?