public void Create(CommerceInstanceMetadata metadata) { _readWriteLock.EnterWriteLock(); try { var copy = GetCacheCopy(); copy.Add(metadata.Name, metadata); WriteToFile(copy); _cache = copy; } finally { _readWriteLock.ExitWriteLock(); } }
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 Update(string name, CommerceInstanceMetadata newMetadata) { _readWriteLock.EnterWriteLock(); try { EnsureCacheLoaded(); if (!_cache.ContainsKey(name)) throw new InvalidOperationException("Commerce instance \"" + name + "\" not exists."); var copy = GetCacheCopy(); var oldMetadata = copy[name]; oldMetadata.DisplayName = newMetadata.DisplayName; oldMetadata.ConnectionString = newMetadata.ConnectionString; WriteToFile(copy); _cache = copy; } finally { _readWriteLock.ExitWriteLock(); } }