0

最近、Breezejs の最新バージョン (1.3.6 から 1.4.1) にアップグレードしました。サーバーからエンティティを取得する状況があり、次のようなものを取得します

{
    "$type": "X.Y.Reference, X.Y",
    "ReferenceTypeId": "BookEdited",
    "ShouldDisplay": true,
    "ShortTitle": "Informationsethik 1995",
    "Title": "Informationsethik",
    "Year": "1995",
    "YearResolved": "1995",
    "CloudProjectSubset": "ReferenceNavigation",
    "Id": "34e1f0d1-eda7-4926-a13f-e75e43ff66b5",
    "ProjectId": "syncproject1"
  },

「ShouldDisplay」プロパティが true に設定されていることに注目してください。後で、私のアプリのロジックにより、別のクエリを実行すると、同じエンティティが他のクエリの中で取得されます。今回は次のようになります。

{
    "$type": "X.Y.Reference, X.Y",
    "ReferenceTypeId": "BookEdited",
    "ShortTitle": "Informationsethik 1995",
    "Title": "Informationsethik",
    "Year": "1995",
    "YearResolved": "1995",
    "CloudProjectSubset": "ReferenceNavigation",
    "Id": "34e1f0d1-eda7-4926-a13f-e75e43ff66b5",
    "ProjectId": "syncproject1"
  },

「ShouldDisplay」プロパティを取得できなくなったことに注意してください。これは、私のロジックにより正しいものです。Breezejs は、各クエリの後にエンティティをローカル キャッシュにマージします。ポイントは、2 番目のクエリの後にバージョン 1.3.6 を使用する場合、2 番目のクエリがそのプロパティなしで同じエンティティを返すため、'ShouldDisplay' が true に設定されたエンティティをまだ持っていることです。上書きされます。一方、バージョン 1.4.1 を使用すると、プロパティ (シリアル化されていなくても) がとにかく上書きされ、null に設定されます。これは私が望むものではありません。要するに、バージョン 1.3.6 では返されたプロパティのみが実際に上書きされ、1.4.1 ではすべてのプロパティが上書きされたように思えます。Breezejs のWeb サイトでまたは Web では、この「マージ」動作に関する情報は見つかりませんでした。保留中の変更に関するマージ戦略に関する設定のみでした。これは、現在直面しているものではありません。これが Breezejs が動作するはずの方法なのか、それとも設定が不足しているのか、誰かが知っていますか? ありがとうございました。

4

1 に答える 1