4

NHibernate を利用するプロジェクトで、テスト ケースに sqlite を使用しています。ReadUncommitted トランザクションを作成しようとする場合を除いて、すべてがうまく機能しています。

例: Session.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted)

エラーメッセージは次のとおりです。

「分離レベル」

(それでおしまい)

コール スタックは次のようになります。

at System.Data.SQLite.SQLiteConnection.BeginDbTransaction(IsolationLevel isolationLevel)
at System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction(IsolationLevel isolationLevel)
at NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel isolationLevel)

別の分離レベル (シリアル化または readcommitted など) に切り替えると、すべてが正しく実行されます。

アイデア?

NHibernate 2.1.2
SQLite (.NET version) 1.0.65.0
Fluent NHibernate 1.0
4

2 に答える 2

7

SQLite (または少なくともその ADO.NET プロバイダー)は、Serializable および ReadCommitted 分離レベル(およびもちろん Unspecified、デフォルトで Serializable) のみをサポートします。

他の値は、言及した ArgumentException をスローします。

于 2010-08-15T00:06:44.007 に答える
7

共有キャッシュを有効にし、両方の接続が同じスレッドからのものでない限り、ReadUncommitted はシリアライズされた分離に戻ることをご存知ですか? もしかしたら、誰かがあなたを自分から救おうとしているのでは?

于 2010-02-18T16:34:12.807 に答える