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)

如果我切换到不同的隔离级别(如序列化或已提交),一切都会正确执行。

想法?

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

2 回答 2

7

您是否知道除非您启用了共享缓存并且两个连接都来自同一个线程,否则 ReadUncommitted 将恢复为序列化隔离?也许有人想把你从自己手中救出来?

于 2010-02-18T16:34:12.807 回答
7

SQLite(或至少它的 ADO.NET 提供程序)仅支持 Serializable 和 ReadCommitted 隔离级别(当然还有 Unspecified,默认为 Serializable)。

任何其他值都会引发您提到的 ArgumentException。

于 2010-08-15T00:06:44.007 回答