2010-02-17 7 views
4

Я использую sqlite для тестовых примеров в проекте, который использует NHibernate. Все работает отлично, за исключением случаев, когда я пытаюсь создать транзакцию с ReadUncommitted:ReadUncommitted в SQLite против NHibernate

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

Сообщение об ошибке:

"IsolationLevel"

(Вот она)

Стек вызовов выглядит следующим образом:

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) 

Если я перехожу к другому изо (как, например, serialized или readcommitted), все выполняется правильно.

Идеи?

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

ответ

7

вы знаете, что ReadUncommitted вернется к Сериализированной изоляции, если вы не включили в общем кэш и оба соединения из одной и той же нити ли? Может, кто-то пытается спасти вас от себя?

6

SQLite (или, по крайней мере, его поставщик ADO.NET) only supports Serializable and ReadCommitted isolation levels (и, конечно, Unspecified, который по умолчанию соответствует Serializable).

Любое другое значение вызывает исключение ArgumentException.