Question

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
Was it helpful?

Solution

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?

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top