public static void DropMsDescription(this SqlServerDatabaseFactory databaseFactory, ITable table, Column column) { var repository = new ExtendPropertyRepository(); var name = "MS_Description"; var level0type = "schema"; var level0name = table.Schema; var level1type = "table"; var level1name = table.Name; var level2type = "column"; var level2name = column.Name; using (var connection = databaseFactory.GetConnection()) { connection.Open(); repository.DropExtendedProperty(connection, name, level0type, level0name, level1type, level1name, level2type, level2name); } }
public static void UpdateMsDescription(this SqlServerDatabaseFactory databaseFactory, ITable table, string description) { var repository = new ExtendPropertyRepository(); var name = "MS_Description"; var level0type = "schema"; var level0name = table.Schema; var level1type = "table"; var level1name = table.Name; var level2type = string.Empty; var level2name = string.Empty; using (var connection = databaseFactory.GetConnection()) { connection.Open(); repository.UpdateExtendedProperty(connection, name, description, level0type, level0name, level1type, level1name, level2type, level2name); table.Description = description; } }
/// <summary> /// Imports an existing database from SQL Server instance /// </summary> /// <param name="logger">Instance for <see cref="Logger"/> class</param> /// <param name="connectionString">Connection string</param> /// <param name="names">Table or view names to include in import action</param> /// <returns>An instance of <see cref="Database"/> class that represents an existing database in SQL Server instance</returns> public static async Task <Database> ImportTablesAndViewsAsync(ILogger <SqlServerDatabaseFactory> logger, string connectionString, params string[] names) { var databaseFactory = new SqlServerDatabaseFactory(logger) { DatabaseImportSettings = new DatabaseImportSettings { ConnectionString = connectionString } }; using (var connection = databaseFactory.GetConnection()) { await connection.OpenAsync(); var database = SqlServerDatabase.CreateWithDefaults(connection.Database); database.ServerName = connection.DataSource; if (names.Length == 0) { database.DbObjects.AddRange(await databaseFactory.GetDbObjectsAsync(connection)); } else { database.DbObjects.AddRange((await databaseFactory.GetDbObjectsAsync(connection)).Where(item => names.Contains(item.FullName))); } var tables = await databaseFactory .GetTablesAsync(connection, database.GetTables()); database.Tables.AddRange(tables); var views = await databaseFactory .GetViewsAsync(connection, database.GetViews()); database.Views.AddRange(views); return(database); } }
/// <summary> /// Imports an existing database from SQL Server instance /// </summary> /// <param name="logger">Instance for <see cref="Logger"/> class</param> /// <param name="connectionString">Connection string</param> /// <param name="names">Table or view names to include in import action</param> /// <returns>An instance of <see cref="Database"/> class that represents an existing database in SQL Server instance</returns> public static Database ImportTablesAndViews(ILogger <SqlServerDatabaseFactory> logger, string connectionString, params string[] names) { var databaseFactory = new SqlServerDatabaseFactory(logger) { DatabaseImportSettings = new DatabaseImportSettings { ConnectionString = connectionString } }; using (var connection = databaseFactory.GetConnection()) { connection.Open(); var database = new Database { DataSource = connection.DataSource, Catalog = connection.Database, Name = connection.Database }; if (names.Length == 0) { database.DbObjects.AddRange(databaseFactory.GetDbObjects(connection).ToList()); } else { database.DbObjects.AddRange(databaseFactory.GetDbObjects(connection).Where(item => names.Contains(item.FullName)).ToList()); } database.Tables.AddRange(databaseFactory.GetTables(connection, database.GetTables()).ToList()); database.Views.AddRange(databaseFactory.GetViews(connection, database.GetViews()).ToList()); return(database); } }