コード例 #1
0
        public List <TableDefinition> GetBy(string connectionName, string schema)
        {
            var where = @"WHERE t.TABLE_TYPE = 'BASE TABLE' AND t.TABLE_SCHEMA = @schema AND t.TABLE_NAME <> 'sysdiagrams'";
            var command = new SqlDataCommand($"{SqlQuery} {where} {OrderBy}", connectionName)
            {
                Parameters = { ["@schema"] = schema }
            };

            return(GetTableDefinitions(command));
        }
コード例 #2
0
        public List <ColumnDefinition> GetBy(string connectionName, string schema)
        {
            var where = @"AND c.TABLE_SCHEMA = @schema";
            var command = new SqlDataCommand($"{SqlQuery} {where} {OrderBy}", connectionName)
            {
                Parameters = { ["@schema"] = schema }
            };

            return(GetColumnDefinitions(command));
        }
コード例 #3
0
        private List <ColumnDefinition> GetColumnDefinitions(SqlDataCommand dataCommand)
        {
            var columnDefinitions = new List <ColumnDefinition>();

            void GetColumnDefinitions(SqlDataReader dataReader)
            {
                while (dataReader.Read())
                {
                    var tableSchema = dataReader.GetString(0);
                    var tableName   = dataReader.GetString(1);
                    var columnName  = dataReader.GetString(2);
                    var dataType    = dataReader.GetString(3);
                    var constraint  = GetConstraint(dataReader);

                    var existingColumnDefinition = columnDefinitions.FirstOrDefault(cd =>
                                                                                    cd.TableSchema == tableSchema &&
                                                                                    cd.TableName == tableName &&
                                                                                    cd.ColumnName == columnName &&
                                                                                    cd.DataType == dataType);

                    if (existingColumnDefinition != null)
                    {
                        existingColumnDefinition.Constraints.Add(constraint);
                        continue;
                    }

                    var columnDefinition = new ColumnDefinition
                    {
                        TableSchema        = tableSchema,
                        TableName          = tableName,
                        ColumnName         = columnName,
                        DataType           = dataType,
                        CharacterMaxLength = !dataReader.IsDBNull(4) ? dataReader.GetInt32(4) : (long?)null,
                        IsNullable         = dataReader.GetBoolean(5),
                        Constraints        = constraint == null ? null : new List <Constraint> {
                            constraint
                        },
                        IsComputed  = dataReader.GetBoolean(8),
                        IsIdentity  = dataReader.GetBoolean(9),
                        IsGenerated = dataReader.GetBoolean(10),
                        HasDefault  = dataReader.GetBoolean(11)
                    };
                    columnDefinitions.Add(columnDefinition);
                }
            }

            ExecuteQuery(() => dataCommand, GetColumnDefinitions);

            return(columnDefinitions);
        }
コード例 #4
0
        public ColumnDefinition GetBy(string connectionName, string schema, string table, string column)
        {
            var where = @"AND c.TABLE_SCHEMA = @schema AND c.TABLE_NAME = @table AND c.COLUMN_NAME = @column";
            var command = new SqlDataCommand($"{SqlQuery} {where} {OrderBy}", connectionName)
            {
                Parameters =
                {
                    ["@schema"] = schema,
                    ["@table"]  = table,
                    ["@column"] = column
                }
            };

            //TODO: if column two key types, multiple rows returned!!!
            return(GetColumnDefinitions(command).FirstOrDefault());
        }
コード例 #5
0
        public static SqlCommand ToSqlCommand(this SqlDataCommand sqlDataCommand, ISqlConnectionManager connectionManager)
        {
            var sqlCommand = new SqlCommand(sqlDataCommand.CommandText);

            if (sqlDataCommand.Parameters != null && sqlDataCommand.Parameters.Count > 0)
            {
                sqlCommand.Parameters.AddRange(sqlDataCommand.Parameters.Select(p => new SqlParameter(p.Key, p.Value)).ToArray());
            }

            if (!string.IsNullOrEmpty(sqlDataCommand.ConnectionName))
            {
                sqlCommand.Connection = connectionManager.GetConnection(sqlDataCommand.ConnectionName);
            }

            return(sqlCommand);
        }
コード例 #6
0
        private List <TableDefinition> GetTableDefinitions(SqlDataCommand dataCommand)
        {
            var tableDefinitions = new List <TableDefinition>();

            void GetTableDefinitions(SqlDataReader dataReader)
            {
                while (dataReader.Read())
                {
                    var tableDefinition = new TableDefinition
                    {
                        DatabaseName = dataReader.GetString(0),
                        TableSchema  = dataReader.GetString(1),
                        TableName    = dataReader.GetString(2)
                    };
                    tableDefinitions.Add(tableDefinition);
                }
            }

            ExecuteQuery(() => dataCommand, GetTableDefinitions);

            return(tableDefinitions);
        }