예제 #1
0
        internal override DatabaseObjectMetadata LoadDatabaseObjectMetadata(DatabaseObject databaseObject)
        {
            var sql = @"SELECT DISTINCT
pg_catalog.obj_description(c.oid) AS table_comment,
c.relname AS table_name
FROM pg_class c
LEFT JOIN pg_attribute a ON a.attrelid = c.oid
LEFT JOIN pg_namespace d ON d.oid = c.relnamespace        
WHERE c.relname = @objectName AND d.nspname= @schemaName
;";

            using (var cn = OpenConnection())
            {
                using (var cmd = new NpgsqlCommand(sql, cn))
                {
                    cmd.Parameters.Add("@schemaName", NpgsqlTypes.NpgsqlDbType.Varchar).Value = databaseObject.SchemaName;
                    cmd.Parameters.Add("@objectName", NpgsqlTypes.NpgsqlDbType.Varchar).Value = databaseObject.ObjectName;

                    using (var dr = cmd.ExecuteReader())
                    {
                        var meta = new DatabaseObjectMetadata();

                        while (dr.Read())
                        {
                            meta.Summary = dr.IsDBNull(0) ? "" : dr.GetString(0);
                        }

                        return(meta);
                    }
                }
            }
        }
예제 #2
0
        internal override DatabaseObjectMetadata LoadDatabaseObjectMetadata(DatabaseObject databaseObject)
        {
            var sql = @"
SELECT table_comment comment 
FROM information_schema.tables t
WHERE t.table_schema LIKE @databaseName AND t.table_name LIKE @objectName
UNION
SELECT routine_comment comment
FROM information_schema.routines r
WHERE r.routine_schema LIKE @databaseName AND r.routine_name LIKE @objectName ;";

            using (var cn = OpenConnection())
            {
                using (var cmd = new MySqlCommand(sql, cn))
                {
                    cmd.Parameters.Add("@databaseName", MySqlDbType.VarChar).Value = databaseObject.DatabaseName;
                    cmd.Parameters.Add("@objectName", MySqlDbType.VarChar).Value   = databaseObject.ObjectName;

                    using (var dr = cmd.ExecuteReader())
                    {
                        var meta = new DatabaseObjectMetadata();

                        while (dr.Read())
                        {
                            meta.Summary = dr.GetString(0);
                        }

                        return(meta);
                    }
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Loads metadata of a database object.
        /// </summary>
        /// <param name="databaseObject"></param>
        /// <returns></returns>
        internal override DatabaseObjectMetadata LoadDatabaseObjectMetadata(DatabaseObject databaseObject)
        {
            var sql = @"
SELECT p.name, p.value
FROM sys.extended_properties p
WHERE p.class = 1 -- OBJECT_OR_COLUMN
    AND p.major_id = OBJECT_ID(@schemaName + '.' + @objectName)
    AND p.minor_id = 0  -- only objects
    AND p.name LIKE 'meta.%'
ORDER BY p.name";

            using (var cn = OpenConnection())
            {
                using (var cmd = new SqlCommand(sql, cn))
                {
                    cmd.Parameters.Add("@schemaName", SqlDbType.NVarChar).Value = databaseObject.SchemaName;
                    cmd.Parameters.Add("@objectName", SqlDbType.NVarChar).Value = databaseObject.ObjectName;

                    using (var dr = cmd.ExecuteReader())
                    {
                        var meta = new DatabaseObjectMetadata();

                        while (dr.Read())
                        {
                            var name  = dr.GetString(0);
                            var value = dr.GetString(1);

                            switch (name)
                            {
                            case Constants.MetaSummary:
                                meta.Summary = value;
                                break;

                            case Constants.MetaRemarks:
                                meta.Remarks = value;
                                break;

                            case Constants.MetaExample:
                                meta.Example = value;
                                break;

                            default:
                                break;
                            }
                        }

                        return(meta);
                    }
                }
            }
        }