breezejs:在ODATA网址中传递64位过滤器

时间:2013-09-13 08:24:24

标签: javascript breeze

我的模型中有64位(长)属性。元数据是正确的,breezejs知道它是64位属性。

然而,在查询数据时,ODATA URL在值之后不包含“L”,因此我在服务器上得到一个异常,因为它认为我正在尝试查询int32。

所以我不得不在过滤器的末尾手动添加“L”。

这不应该由breezejs自动完成吗?

修改

在breezejs代码中,有一个fmtInt函数。它去那里虽然dataType是Int64。我想应该有一个fmtLong函数,用于添加'L'。

我更改了以下代码:

  DataType.Int64 = DataType.addSymbol({
    defaultValue: 0, isNumeric: true, isInteger: true, quoteJsonOData: true,
    parse: coerceToInt,
    fmtOData:  fmtInt,
    getNext: getNextNumber
});

  DataType.Int64 = DataType.addSymbol({
    defaultValue: 0, isNumeric: true, isInteger: true, quoteJsonOData: true,
    parse: coerceToInt,
    fmtOData:  makeFloatFmt("L"),
    getNext: getNextNumber
});

它有效。这是正确的方法吗?如果是这样,可能有错误修复?

3 个答案:

答案 0 :(得分:1)

现在已经解决了Breeze 1.4.8的问题。

答案 1 :(得分:0)

杰伊,新版本似乎没有解决这个问题。是对的吗 ?

答案 2 :(得分:0)

我遇到了与1.4.8版本相同的问题。以下通过明确提供Breeze DataType解决了该问题。这包括OData属性的“L”。

        var data = {
            value: number,
            dataType: breeze.DataType.Int64
        }

        query = query.where(new breeze.Predicate('column', '==', data));