public SysCatManager(MdbContext context) { context.NullTest(nameof(context)); _mdb = context; _log = _mdb.Logger; if (_defaultDbSchema.IsEmpty()) { _defaultDbSchema = _mdb.Execute <string>(SQLCat.GetCatalog(_mdb.ProviderName)["GetDefaultSchema"]); } }
public async Task CreateDbSchemaAsync(string dbName = db_name) { var s = SQLCat.GetCatalog(_mdb.ProviderName); var test = await _mdb.ExecuteAsync <string>(s["TestSchema"]); if (test.IsEmpty()) { try { await _mdb.BeginTransactionAsync(); foreach (string statement in s["CreateSchemaObjects"].Split("--go", StringSplitOptions.RemoveEmptyEntries)) { await _mdb.ExecuteAsync(statement); } _log.LogDebug($"Schema SysCat was created in database {_mdb.DbName}"); _log.LogDebug("Schema tables SysCat.SysAreas and SysCat.SysSchemas was created in SysCat Schema"); string owner = _defaultDbSchema; //await _mdb.ExecuteAsync<string>(s["GetCurrentSchema"]); int id = await _mdb.ExecuteAsync <int>(s["AddSysAreas"], new MdbParameter("@SchemaName", owner), new MdbParameter("@SchemaOwner", owner), new MdbParameter("@SchemaVersion", schema_version)); await _mdb.CommitAsync(); } catch (Exception e) { _mdb.RollBack(); _log.LogError($"CreateSchema error: {e.Message}"); throw; } } else { _log.LogDebug("Schema SysCat already exists in current database"); } }
public async Task DropDbSchemaAsync(string dbName = db_name) { var s = SQLCat.GetCatalog(_mdb.ProviderName); var test = await _mdb.ExecuteAsync <string>(s["TestSchema"]); if (!test.IsEmpty()) { try { await _mdb.ExecuteAsync(s["DropSchema"]); _log.LogDebug($"Schema SysCat was deleted from database {_mdb.DbName}"); } catch (Exception e) { _log.LogError($"Delete Schema error: {e.Message}"); throw; } } else { _log.LogDebug($"Schema SysCat not exists in database {_mdb.DbName}"); } }