CQRS.Tests.TemporaryLocalDbManager.CreateOrGetLocalDb C# (CSharp) Method

CreateOrGetLocalDb() public method

public CreateOrGetLocalDb ( string requestedDbName ) : string
requestedDbName string
return string
        public string CreateOrGetLocalDb(string requestedDbName)
        {
            Contract.Assert(!_disposed, "Attempt to use disposed object");
            ManagedLocalDb dbName;
            if(!_reservedDatabases.TryGetValue(requestedDbName, out dbName))
            {
                using(var transaction = new TransactionScope())
                {
                    if(TryReserveDatabase(out dbName))
                    {
                        _reservedDatabases.Add(requestedDbName,dbName);
                    }
                    else
                    {
                        // ReSharper disable once AssignNullToNotNullAttribute
                        var newDBName = $"TemporaryLocalDbManager_{Guid.NewGuid()}.mdf";
                        dbName = new ManagedLocalDb(newDBName, isEmpty:true, isFree:false, reservationDate:DateTime.UtcNow, connectionString: ConnectionStringForDbNamed(newDBName));

                        using(new TransactionScope(TransactionScopeOption.Suppress))
                        {
                            _masterConnection.ExecuteNonQuery($"CREATE DATABASE [{dbName.Name}]");
                        }

                        InsertDatabase(dbName.Name);

                        _reservedDatabases.Add(requestedDbName,dbName);
                    }
                    transaction.Complete();
                }
            }

            if(!dbName.IsEmpty)
            {
                EmptyOutDatase(dbName.Name);
            }


            return _reservedDatabases[requestedDbName].ConnectionString;
        }