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);
            }
        }
Ejemplo n.º 4
0
        /// <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);
            }
        }