0

サーバーからクライアントにすべての非常に大きな Int64 値をロードする際に問題があります。問題は、25776087313154050 より大きいすべての数値にあると思います。Breeze の No DB アプローチを使用し、すべてのメタデータを手動で作成します。メタデータは次のとおりです。

store.addEntityType({
    shortName: "AdditionalInfoType",
    namespace: "Services",
    autoGeneratedKeyType: breeze.AutoGeneratedKeyType.Identity,
    dataProperties: {
        id: {dataType: breeze.DataType.Int64, isNullable: false, isPartOfKey: true },
        name: { dataType: breeze.DataType.String, isNullable: true },
        dataType: { dataType: breeze.DataType.String, isNullable: false, defaultValue: 'Unknown' }
    },
    navigationProperties: {
        enumItems: {
            entityTypeName: "AdditionalInfoEnumValue", isScalar: false, associationName: "AdditionalInfoEnumValue_AdditionalInfoType"
        }
    }
});

サーバーから Fiddler が表示するものを次に示します (データはここで正しいです)。

[{"$id":"1","$type":"Services.AdditionalInfoType, Services",
"Name":"Shoe Size","DataType":"Numeric","EnumItems":null,"Id":25776087313154051},
{"$id":"2","$type":"Services.AdditionalInfoType, Services",
"Name":"Floating Holiday","DataType":"Date","EnumItems":null,"Id":25776087313154050}]

Breeze クエリは非常に単純です。

entityQuery.from('AdditionalInfoTypes')
            .toType(entityNames.additionalInfoType)
            .using(employeeManager)

そして、ここにクライアントにあるものがあります(残念ながら、ここに画像を投稿することはできません):

entity[0].id == 25776087313154052
entity[1].id == 25776087313154050

そのため、2 番目のエンティティの Id は25776087313154050クライアントとサーバーの両方で正しく読み込まれ、値があります。しかし、25776087313154051クライアントのサーバー値の場合は25776087313154052.
いくつかの実験を行ったところ、25776087313154050 を超えるすべての数値で問題が再現可能であることがわかりました (キー部分の場合とそうでない場合の両方)。ブリーズローダーの数が1ずつ増える。

私が間違っているか、それを解決する方法はありますか?

4

1 に答える 1