public CommerceDbTransaction(DbContextTransaction underlyingTransaction, CommerceDatabase database) { Require.NotNull(underlyingTransaction, "underlyingTransaction"); Require.NotNull(database, "database"); UnderlyingTransaction = underlyingTransaction; Database = database; }
public void CreateInstance(CommerceInstanceMetadata metadata) { Require.NotNull(metadata, "metadata"); var current = _metadataStore.GetByName(metadata.Name); if (current != null) throw new InvalidOperationException("Commerce instance \"" + metadata.Name + "\" already exists."); var dbProvider = _dbProviderFactory.GetDbProvider(metadata.DbProviderInvariantName, metadata.DbProviderManifestToken); var connectionString = dbProvider.GetConnectionString(metadata); Event.Raise(new CommerceInstanceCreating(metadata)); try { CreatePhysicalDatabaseIfNotExists(connectionString); using (var database = new CommerceDatabase(metadata, dbProvider)) { dbProvider.DatabaseOperations.CreateDatabase(database); } } catch(Exception ex) { throw new CommerceDbException("Commerce instance creation failed: " + ex.Message, ex); } _metadataStore.Create(metadata); Event.Raise(new CommerceInstanceCreated(metadata)); if (InstanceInitializers != null) { var instance = OpenInstance(metadata.Name); foreach (var initializer in InstanceInitializers) { initializer.Initialize(instance); } } }
public void CreateInstance(CommerceInstanceSettings settings) { Require.NotNull(settings, "settings"); var current = _settingsManager.Get(settings.Name); if (current != null) throw new InvalidOperationException("Commerce instance \"" + settings.Name + "\" already exists."); var dbProvider = _dbProviders.Find(settings.DbProviderInvariantName, settings.DbProviderManifestToken); var connectionString = dbProvider.GetConnectionString(settings); try { CreatePhysicalDatabaseIfNotExists(connectionString, dbProvider); using (var database = new CommerceDatabase(settings)) { dbProvider.DatabaseOperations.CreateDatabase(database); } } catch (Exception ex) { throw new CommerceDbException("Commerce instance creation failed: " + ex.Message, ex); } _settingsManager.Create(settings.Name, settings); if (_initializers != null) { var instance = GetInstance(settings.Name); foreach (var initializer in _initializers) { initializer.Initialize(instance); } } Event.Raise(new CommerceInstanceCreated(settings.Name, settings), GetInstance(settings.Name)); }
public void DeleteInstance(string name) { var metadata = _metadataStore.GetByName(name); if (metadata == null) throw new InvalidOperationException("Cannot find metadata for commerce instance: " + name + "."); Event.Raise(new CommerceInstanceDeleting(metadata)); try { var dbProvider = _dbProviderFactory.GetDbProvider(metadata.DbProviderInvariantName, metadata.DbProviderManifestToken); using (var database = new CommerceDatabase(metadata, dbProvider)) { if (database.DbContext.Database.Exists()) { dbProvider.DatabaseOperations.DeleteDatabase(database); } } } catch (Exception ex) { throw new CommerceDbException("Commerce instance deletion failed: " + ex.Message, ex); } _metadataStore.Delete(name); Event.Raise(new CommerceInstanceDeleted(metadata)); }
public CommerceInstance OpenInstance(string name) { Require.NotNullOrEmpty(name, "name"); var metadata = _metadataStore.GetByName(name); if (metadata == null) throw new InvalidOperationException("Commerce instance \"" + name + "\" not exists."); var dbProvider = _dbProviderFactory.GetDbProvider(metadata.DbProviderInvariantName, metadata.DbProviderManifestToken); var database = new CommerceDatabase(metadata, dbProvider); return new CommerceInstance(database); }
public void DeleteInstance(string name) { var settings = _settingsManager.Get(name); if (settings == null) throw new InvalidOperationException("Cannot find metadata for commerce instance: " + name + "."); var instance = GetInstance(name); try { var dbProvider = _dbProviders.Find(settings.DbProviderInvariantName, settings.DbProviderManifestToken); using (var database = new CommerceDatabase(settings)) { if (database.DbContext.Database.Exists()) { dbProvider.DatabaseOperations.DeleteDatabase(database); } } } catch (Exception ex) { throw new CommerceDbException("Commerce instance deletion failed: " + ex.Message, ex); } _settingsManager.Delete(name); // Delete instance folder var folder = DataFolders.Instances.GetFolder(settings.Name); folder.Delete(); Event.Raise(new CommerceInstanceDeleted(settings.Name, settings), instance); }
public CommerceRepository(CommerceDatabase database, Type entityType) { _database = database; EntityType = entityType; }