views:

150

answers:

2

I am using sqlite for test cases in a project that leverages NHibernate. Everything is working great, except when I try to create a ReadUncommitted transaction:

e.g. Session.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted)

The error message is:

"isolationLevel"

(thats it)

The call stack looks like:

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)

If I switch to a different isolation level (like serialized or readcommitted), everything executes correctly.

Ideas?

NHibernate 2.1.2
SQLite (.NET version) 1.0.65.0
Fluent NHibernate 1.0
+2  A: 

Did you know that ReadUncommitted will revert to Serialized isolation unless you've enabled the shared cache and both connections are from the same thread? Perhaps someone's trying to save you from yourself?

James L
+1  A: 

SQLite (or at least its ADO.NET provider) only supports Serializable and ReadCommitted isolation levels (and of course Unspecified, which defaults to Serializable).

Any other value throws the ArgumentException you mention.

Mauricio Scheffer