ユーザーが添付ファイル付きの電子メールメッセージを送信できるアプリを開発しています。次のように両方の電子メールと添付ファイルのドメインオブジェクトは、ヒロのidジェネレータとして定義されています:コミット前のNhibernate HiLoのid値
<id name="Id">
<generator class="hilo" />
</id>
NHibernateのは、列がnext_hiでhibernate_unique_keyという名前のテーブルを持つスキーマを生成します。
電子メールに添付ファイルを追加すると、内部的に添付ファイルの一覧に添付ファイルオブジェクトが追加され、追加された内容がユーザーに表示されるようにバインドされます。 オプションで、以前に追加した添付ファイルを選択し、[削除]ボタンをクリックしてリストから削除することができます。 問題は、オブジェクトがデータベースに保存されていないため、添付ファイルのIDが割り当てられていないため、リストから削除する添付ファイルobjを一意に識別できません。
保存する前にオブジェクトにid値を割り当てる方法はありますか?私はhiloアルゴリズムの使い方をよく理解していないと思いますし、それが主な目的です。
は、彼はまた、いくつかのラウンドトリップを防ぐために、ハイローアルゴリズムによって生成された割り当てられたIDを行うことができませんでしたか?この戦略では、複数の添付ファイルをバッチ処理に追加することが望ましいでしょう。 – Fourth
私は私が従うと、HiLoアルゴリズムによってIDが生成され、session.Save()を呼び出すときにセッションによって割り当てられるが、バッチ処理に最適なこの時点でデータベースヒットは発生しない。 –
私は推測するこれは、彼のトランザクションスコープがユーザーの行動(私の意見では危険なパターン)で発生することを望む場合には有効です。もし彼が彼の取引をより高い範囲に設定すれば、もう少し考えが必要になります。 – Fourth