ReadUncommitted не работает в SQLite против NHibernate - PullRequest
4 голосов
/ 17 февраля 2010

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

например. 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)

Если я переключаюсь на другой уровень изоляции (например, сериализованный или переданный на чтение), все выполняется правильно.

Идеи

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

Ответы [ 2 ]

7 голосов
/ 18 февраля 2010

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

6 голосов
/ 15 августа 2010

SQLite (или, по крайней мере, его поставщик ADO.NET) поддерживает только уровни изоляции Serializable и ReadCommitted (и, конечно, Unspecified, по умолчанию Serializable).

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

...