public async Task<SQLiteTransactionalDataSource> BeginTransactionAsync(IsolationLevel? isolationLevel = null, bool forwardEvents = true)
{
IDisposable lockToken = null;
if (!DisableLocks)
lockToken = await SyncLock.WriterLockAsync();
var connection = await CreateConnectionAsync();
SQLiteTransaction transaction;
if (isolationLevel == null)
transaction = connection.BeginTransaction();
else
transaction = connection.BeginTransaction(isolationLevel.Value);
return new SQLiteTransactionalDataSource(this, forwardEvents, connection, transaction, lockToken);
}