public async Task RegisterUsersAsync(long listId, IEnumerable <long> userIds) { await WriteTaskFactory.StartNew(() => { try { ReaderWriterLock.EnterWriteLock(); using (var conn = this.DangerousOpenConnection()) using (var tran = conn.BeginTransaction(DefaultIsolationLevel)) { foreach (var userId in userIds) { conn.Execute(TableInserter, new DatabaseListUser(listId, userId)); } tran.Commit(); } } catch (Exception ex) { throw WrapException(ex, "RegisterUserAsync", TableInserter); } finally { ReaderWriterLock.ExitWriteLock(); } }); }
internal async Task VacuumAsync() { // should execute WITHOUT transaction. await WriteTaskFactory.StartNew(() => { using (AcquireWriteLock()) using (var con = this.DangerousOpenConnection()) { con.Execute("VACUUM;"); } }); }