Esempio n. 1
0
 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"]);
     }
 }
Esempio n. 2
0
        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");
            }
        }
Esempio n. 3
0
        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}");
            }
        }