Как установить уровень изоляции транзакции для ReadUncommitted в SQLite?
В ответе на этот пост говорится:
Знаете ли вы, что ReadUncommitted вернется в сериализованную изоляцию, если вы не включили общий кэш, и оба соединения не принадлежат одному потоку?
Работая в C#, я затем определил импорт DLL следующим образом:
[DllImport("System.Data.SQLite.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int sqlite3_enable_shared_cache(int enable);
Я вызвал эту функцию, чтобы включить кеш, и при вызове получил статус успешного результата 0. Тем не менее, я все еще получаю исключение "уровень изоляции", когда выполняю строки ниже и пытаюсь установить уровень изоляции на ReadUncommitted.
string connectionString = @"data source=d:\db\test.db3;datetimeformat=Ticks";
SQLiteConnection conn = new SQLiteConnection(connectionString);
conn.Open();
IDbTransaction tran = conn.BeginTransaction(IsolationLevel.ReadUncommitted);
Этот вопрос связан с другим вопросом, который я разместил здесь.
Как я могу выполнить запрос с уровнем изоляции ReadUncommitted в SQLite?
1 ответ
Для выполнения незафиксированных прочтений см. Следующий вопрос и ответ:
Как выполнить SQLite запрос с помощью считывателя данных без блокировки базы данных?