Adding table is not issue.Insert don't have issue. Case is failing on read var messageActual = (string)queryCommand.ExecuteScalar(); Here is updated test case public void Test_Read_Uncommited() { var connectionString = $"Data Source ={_dbFile}; Cache = Shared; read_uncommitted = true;"; using (var firstConnection = new SQLiteConnection(connectionString)) { try { firstConnection.Open(); using (var firstTransaction = firstConnection.BeginTransaction()) { string message = "Hello World!"; using (var createTable = firstConnection.CreateCommand()) { createTable.CommandText = "CREATE TABLE Message(Text TEXT) "; createTable.ExecuteNonQuery(); } using (var insertRow = firstConnection.CreateCommand()) { insertRow.CommandText = $"INSERT INTO Message ( Text ) VALUES ( '{message}' ); "; insertRow.ExecuteNonQuery(); } using (var secondConnection = new SQLiteConnection(connectionString)) { try { secondConnection.Open(); //using (var secondTransaction = secondConnection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted)) { var queryCommand = secondConnection.CreateCommand(); queryCommand.CommandText = "SELECT Text FROM Message;"; var messageActual = (string)queryCommand.ExecuteScalar(); Assert.IsTrue(string.CompareOrdinal(message, messageActual) == 0); } } finally { secondConnection.Close(); } firstTransaction.Rollback(); } } } finally { firstConnection.Close(); } } }