Exemplo n.º 1
0
        private void LoadForeignKeys(SqlMetadata metadata)
        {
            ForeignKeys = new List <SqlForeignKey>();

            foreach (DataRow row in metadata.ForeignKeysMetadata.Rows)
            {
                var schemaName     = row["foreign_key_schema_name"].ToString();
                var tableName      = row["foreign_key_table_name"].ToString();
                var foreignKeyName = row["foreign_key_name"].ToString();

                var table      = Tables.Get(schemaName, tableName);
                var foreignKey = table.ForeignKeys.Get(foreignKeyName);
                if (foreignKey == null)
                {
                    var primaryKeySchemaName = row["primary_key_schema_name"].ToString();
                    var primaryKeyTableName  = row["primary_key_table_name"].ToString();
                    var primaryKeyTable      = Tables.Get(primaryKeySchemaName, primaryKeyTableName);

                    foreignKey = new SqlForeignKey(foreignKeyName)
                    {
                        Table      = table,
                        PrimaryKey = primaryKeyTable.PrimaryKey,
                        IsDisabled = (bool)row["is_disabled"]
                    };

                    ForeignKeys.Add(foreignKey);
                }

                var column = foreignKey.Table.Columns.Get(row["foreign_key_column_name"].ToString());
                foreignKey.Columns.Add(column);
            }
        }
Exemplo n.º 2
0
        private void LoadTriggers(SqlMetadata metadata)
        {
            Triggers = new List <SqlTrigger>();

            foreach (DataRow row in metadata.TriggersMetadata.Rows)
            {
                var schemaName = row["trigger_schema_name"].ToString();
                var tableName  = row["trigger_table_name"].ToString();

                var trigger = new SqlTrigger(row["trigger_name"].ToString())
                {
                    Table      = Tables.Get(schemaName, tableName),
                    Definition = row["trigger_definition"].ToString(),
                    IsDisabled = (bool)row["is_disabled"]
                };

                Triggers.Add(trigger);
            }
        }
Exemplo n.º 3
0
        private void LoadDefaultConstraints(SqlMetadata metadata)
        {
            DefaultConstraints = new List <SqlDefaultConstraint>();

            foreach (DataRow row in metadata.DefaultConstraintsMetadata.Rows)
            {
                var schemaName = row["default_constraint_schema_name"].ToString();
                var tableName  = row["default_constraint_table_name"].ToString();

                var table             = Tables.Get(schemaName, tableName);
                var defaultConstraint = new SqlDefaultConstraint(row["default_constraint_name"].ToString())
                {
                    Column    = table.Columns.Get(row["default_constraint_column_name"].ToString()),
                    Defintion = row["default_constraint_definition"].ToString()
                };

                DefaultConstraints.Add(defaultConstraint);
            }
        }
Exemplo n.º 4
0
        public void LoadFromMetadata(SqlMetadata metadata)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException(nameof(metadata));
            }

            Name    = metadata.DatabaseName;
            Schemas = new List <SqlSchemaName>();

            LoadTables(metadata);
            LoadViews(metadata);
            LoadIndexes(metadata);
            LoadForeignKeys(metadata);
            LoadCheckConstraints(metadata);
            LoadDefaultConstraints(metadata);
            LoadTriggers(metadata);
            LoadViews(metadata);
            LoadStoredProcedures(metadata);
            LoadFunctions(metadata);
        }
Exemplo n.º 5
0
        private void LoadFunctions(SqlMetadata metadata)
        {
            Functions = new List <SqlFunction>();

            foreach (DataRow row in metadata.FunctionsMetadata.Rows)
            {
                var function = new SqlFunction(row["function_name"].ToString())
                {
                    Schema     = AddSchemaIfNotExists(row["function_schema_name"].ToString()),
                    Database   = this,
                    Definition = row["function_definition"].ToString()
                };

                var parameterRows = metadata.FunctionParametersMetadata.Select().AsEnumerable().Where(x =>
                                                                                                      x["function_schema_name"].ToString().Equals(function.Schema.Name, StringComparison.OrdinalIgnoreCase) &&
                                                                                                      x["function_name"].ToString().Equals(function.Name, StringComparison.OrdinalIgnoreCase));

                foreach (var parameterRow in parameterRows)
                {
                    var parameter = new SqlFunctionParameter(parameterRow["parameter_name"].ToString())
                    {
                        Function = function,
                        DataType = new SqlDataType
                        {
                            SqlTypeName = parameterRow["type_name"].ToString(),
                            MaxLength   = Convert.ToInt32(parameterRow["max_length"], CultureInfo.InvariantCulture),
                            Precision   = Convert.ToInt32(parameterRow["precision"], CultureInfo.InvariantCulture),
                            Scale       = Convert.ToInt32(parameterRow["scale"], CultureInfo.InvariantCulture)
                        },
                        DefaultValue = parameterRow["default_value"] != DBNull.Value ? parameterRow["default_value"].ToString() : null as string,
                        IsOutput     = (bool)parameterRow["is_output"]
                    };

                    function.Parameters.Add(parameter);
                }

                Functions.Add(function);
            }
        }
Exemplo n.º 6
0
        private void LoadTables(SqlMetadata metadata)
        {
            Tables = new List <SqlTable>();

            foreach (DataRow row in metadata.TablesMetadata.Rows)
            {
                var schemaName = row["table_schema_name"].ToString();
                var tableName  = row["table_name"].ToString();

                var table = Tables.Get(schemaName, tableName);
                if (table == null)
                {
                    table = new SqlTable(tableName)
                    {
                        Database = this,
                        Schema   = AddSchemaIfNotExists(schemaName)
                    };

                    Tables.Add(table);
                }

                var column = new SqlTableColumn(row["column_name"].ToString())
                {
                    Table    = table,
                    DataType = new SqlDataType
                    {
                        SqlTypeName = row["type_name"].ToString().ToUpperInvariant(),
                        MaxLength   = Convert.ToInt32(row["max_length"], CultureInfo.InvariantCulture),
                        Precision   = Convert.ToInt32(row["precision"], CultureInfo.InvariantCulture),
                        Scale       = Convert.ToInt32(row["scale"], CultureInfo.InvariantCulture)
                    },
                    IsNullable = (bool)row["is_nullable"],
                    IsIdentity = (bool)row["is_identity"],
                    IsComputed = (bool)row["is_computed"]
                };

                table.Columns.Add(column);
            }
        }
Exemplo n.º 7
0
        private void LoadIndexes(SqlMetadata metadata)
        {
            Indexes = new List <SqlIndex>();

            foreach (DataRow row in metadata.IndexesMetadata.Rows)
            {
                var schemaName = row["index_schema_name"].ToString();
                var tableName  = row["index_table_name"].ToString();
                var indexName  = row["index_name"].ToString();

                var table = Tables.Get(schemaName, tableName);
                var index = table.Indexes.Get(indexName);
                if (index == null)
                {
                    index = new SqlIndex(indexName)
                    {
                        Table        = table,
                        IsClustered  = (bool)row["is_clustered"],
                        IsUnique     = (bool)row["is_unique"],
                        IsPrimaryKey = (bool)row["is_primary_key"],
                        IsDisabled   = (bool)row["is_disabled"]
                    };

                    Indexes.Add(index);
                }

                var column     = index.Table.Columns.Get(row["index_column_name"].ToString());
                var isIncluded = (bool)row["is_included_column"];
                if (isIncluded)
                {
                    index.IncludedColumns.Add(column);
                }
                else
                {
                    index.KeyColumns.Add(column);
                }
            }
        }
Exemplo n.º 8
0
        private void LoadViews(SqlMetadata metadata)
        {
            Views = new List <SqlView>();

            foreach (DataRow row in metadata.ViewsMetadata.Rows)
            {
                var schemaName = row["view_schema_name"].ToString();
                var viewName   = row["view_name"].ToString();

                var view = Views.Get(schemaName, viewName);
                if (view == null)
                {
                    view = new SqlView(viewName)
                    {
                        Database = this,
                        Schema   = AddSchemaIfNotExists(schemaName)
                    };

                    Views.Add(view);
                }

                var column = new SqlViewColumn(row["column_name"].ToString())
                {
                    View     = view,
                    DataType = new SqlDataType
                    {
                        SqlTypeName = row["type_name"].ToString().ToUpperInvariant(),
                        MaxLength   = Convert.ToInt32(row["max_length"], CultureInfo.InvariantCulture),
                        Precision   = Convert.ToInt32(row["precision"], CultureInfo.InvariantCulture),
                        Scale       = Convert.ToInt32(row["scale"], CultureInfo.InvariantCulture)
                    },
                    IsNullable = (bool)row["is_nullable"],
                    IsIdentity = (bool)row["is_identity"]
                };

                view.Columns.Add(column);
            }
        }