0

これは、この質問の精緻化と明確化です。

2 つのテーブルがあるFooとしBarます。

Barへの FK がありFooます。

アプリケーションでは、テーブルはクラスによって表されFoo、 のリストがありBarます。 Barの ID のプロパティがありFoo、データベースに FK があります。

SessionTransactionwithのコンテキストでは、IsolationLevel.ReadUncommittedのインスタンスをデータベースに追加し、生成された ID をのインスタンスのプロパティにFoo割り当て、データベースにも追加します。Foo_idBar

さて、を呼び出す前に、データベースから のリストをTransaction.Commit()NHibernate に読み込ませることは可能ですか? つまり、コミットされていないデータを読み取りますか?FooBar

これを示す VS2012 プロジェクトを作成しました。これには、必要なデータベースを構築するための SSDT プロジェクトが含まれており、私が求めていることを示すテストが含まれています。

ありがとうございました。

4

1 に答える 1

0

同じトランザクションのコンテキストで、データベースに加えたすべての変更を読み戻すことができるので、そうです。トランザクションの分離レベルは、そのトランザクション内で行われた変更には関係ありません。

ただし、NHibernate は通常、既に読み込まれているオブジェクトを更新しません。しかし、Flush() に続いて Clear() または Evict() を実行し、Foo を再度読み取ると、そのコレクションには Bar のインスタンスが含まれます。(同じセッションにいる限り、トランザクションのコミットはこれとは無関係ですが、デフォルト設定では Commit() が自動的に Flush() を呼び出します。)

于 2013-08-11T21:38:49.737 に答える