ID マップで使用されるドメイン オブジェクトがあります (キーはオブジェクトのId
プロパティです)。
擬似コード:
map = new Mapping();
map[domainObj.Id] = 'foo';
オブジェクトを観察して、データベースに保存されたことを知らせます。
domainObj.bind('saved', function() {
map[domainObj.Id] = 'new foo!'
})
新しいオブジェクトの場合、Id
フィールドは空で、データベースに保存されるまで入力されません。
そこに私の問題があります。新しいオブジェクトの場合、保存後にオブジェクトの ID が変更されているため、ルックアップ " map[domainObj.Id]
" は失敗します!
このようなアイデンティティ マップでオブジェクトを使用する最良の方法は何ですか?
制約:
- オブジェクトをマッピングのキーとして許可しない言語を使用しています [JavaScript]
- 新しいオブジェクトを保存するときは、サーバー上で
Id
フィールドを生成する必要があります
アップデート
フィードバックをお寄せいただきありがとうございます。値オブジェクトがエンティティと同じ方法でマップされることを本当に望んでいます。値オブジェクトが保存されていないからといって、アプリケーションにマップする値がないというわけではありません。実際、私はアイデンティティ マップが何であるかを誤解しています (パターン定義を読み直した後、私は実際には使用していないことがわかりました)。
私が思いついた解決策は、Igor の答えからほぼそのままです。各オブジェクトは、インスタンス化時に割り当てられたランダムな ID を取得します。それは、オブジェクトが存在するコンテキストの存続期間中、一意であり、不変であり、不変です。データベースからのエンティティと新しいインスタンス化の両方に存在します。エンティティの微調整は、オブジェクトの実際の ID と一致するように設定されていることです。これにより、デバッグが少し簡単になります。これは、マッピングでキーとして使用する値です。