hereと記述されているように、ビジネストランザクションパターンごとの会話パターンをWPFアプリケーションで実装したいと思います。残念ながら、このアプリケーションには、すべてのテーブルでSQL Server生成のIDキーを使用する既存の大規模なデータベースがあります。ビジネストランザクションとアイデンティティキーごとのNHibernate会話
NHibernateセッションに新しいオブジェクトを追加すると、IDキーがあれば挿入されます。 Fabioには、まだ作業単位全体を完了させていなくても、各要求の最後に現在のトランザクションをコミットするパターンがあります。
私が正しく理解している場合、これは、オブジェクトがデータベースに挿入され、作業ユニットを放棄しても削除されないことを意味します。したがって:
- このパターンはIDキーと互換性がありませんか?
- 合理的な回避策はありますか?
- 私はこの場合に使用できるより良いパターンがありますか?
編集#1:
ファビオからのいくつかの追加のコメントはhereです。
編集#2:
さらに探る(...)は、持続に(...)を保存に似ている方法が、混乱するのに十分なだけ違う私をリードしています。 hibernate FAQsから取られたこの文は興味深いです:
持続()メソッドは、また、それは トランザクション境界の外に呼び出された場合、それはINSERT 文を実行しないこと を保証します。これは、拡張されたセッション/永続コンテキスト で長時間実行される会話では役に立ちます です。
もちろん、トランザクション境界内で同じことが保証されていれば、より有用でしょうか?とにかく取引を使用していないという印象を受けました。
私はSession.Persist()を試してみましたが、私はオープントランザクションを持っていませんでしたが、すぐに挿入を実行しました - それが意味することなら、少なくとも動作しません。 – Sam