2

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

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

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

这不应该由微风自动完成吗?

编辑

在微风的代码中,有一个 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
});

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

4

3 回答 3

1

这已从 Breeze 1.4.8 开始修复,现在可用。

于 2014-01-07T22:33:35.537 回答
0

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

于 2013-10-18T07:54:24.400 回答
0

我在 1.4.8 版本中遇到了同样的问题。以下通过显式提供 Breeze DataType 解决了该问题。这包括 OData 属性上的“L”。

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

        query = query.where(new breeze.Predicate('column', '==', data));
于 2014-05-14T14:18:14.273 回答