1

Breezeを使用して動的データ編集グリッドを作成しています。マネージャーに新しいエンティティを追加し、プロパティを編集し、それをWebAPIサービスに保存してローカルクエリを実行した後、同じエンティティを2回取得します。1つのエンティティは、entitystateでサーバーによって生成されたキーが変更されておらず、もう1つのエンティティはprimarykey -1であり、entitystateが追加されています。

私が何を間違っているのか、またはBreezeの背後にあるメカニズムを理解していなかったのか本当にわかりません。

ノート。

savechangesメソッドをオーバーライドしたカスタムコンテキストプロバイダーを使用しています。キーマップで、エンティティタイプ、realvalue(DBで生成されたキー)、tempvalue(Breezeによって割り当てられたキー、たとえば-1)を返します。

編集。

私は問題を解決しました。カスタムコンテキストプロバイダーにバグがありました。生成していたキーマップをsavechangescoreメソッドの結果に実際に追加するのを忘れています。

4

2 に答える 2

0

最初に確認するのは、一時キー(つまり、-1)を使用してエンティティを実際に保存しているかどうかです。

この場合(明らかに望ましくない)、このentityTypeのメタデータに正しい「AutoGeneratedKeyType」が含まれていない可能性があります。これを確認するには、MetadataStore.getEntityTypeメソッドを呼び出して、メタデータを調べます。

そうでない場合は、カスタムコンテキストプロバイダーにコードを投稿してください。

于 2013-01-30T20:42:57.610 に答える
0

問題を解決しました。カスタムコンテキストプロバイダーにバグがありました。生成したキーマップをsavechangescoreメソッドの結果に実際に追加するのを忘れています。

于 2013-02-03T11:22:41.633 に答える