System.Data.SQLite транзакция блокирует всю базу данных - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь вставить в 2 разные таблицы из разных транзакций.К сожалению, я получаю исключение "база данных заблокирована" на cn2.Execute ...

            var cb = new System.Data.SQLite.SQLiteConnectionStringBuilder
        {
            BinaryGUID = true,
            DataSource = string.Format("file:SqliteTest-{0:N}.db", Guid.NewGuid()),
            FailIfMissing = false,
            JournalMode = System.Data.SQLite.SQLiteJournalModeEnum.Wal,
            LegacyFormat = false,
            Pooling = true,
            SyncMode = System.Data.SQLite.SynchronizationModes.Normal,
            DefaultIsolationLevel = System.Data.IsolationLevel.ReadCommitted
        };

        using (var cn1 = new System.Data.SQLite.SQLiteConnection(cb.ToString()))
        {
            cn1.Open();
            cn1.Execute("create table t_1(uuid BLOB not null primary key, ts INTEGER not null);");
            cn1.Execute("create table t_2(uuid BLOB not null primary key, ts INTEGER not null);");
            using (var cn2 = (System.Data.SQLite.SQLiteConnection)cn1.Clone())
            {
                using (var tr1 = cn1.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
                using (var tr2 = cn2.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
                {
                    cn1.Execute("insert into t_1(uuid,ts) values(@uuid, @ts);", 
                                new { uuid = Guid.NewGuid(), ts = DateTime.UtcNow.Ticks }, tr1);
                    cn2.Execute("insert into t_2(uuid,ts) values(@uuid, @ts);",
                                new { uuid = Guid.NewGuid(), ts = DateTime.UtcNow.Ticks }, tr2);
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...