查询与C#方法检索数据库元数据

时间:2014-02-26 21:32:56

标签: c# sql-server tsql metadata getschema

我需要为数据库中的每个表检索以下信息:

  1. 所有列名称
  2. 对于每个列的类型
  3. 输入最大长度
  4. 可能的方法是运行查询(甚至可以使用await执行它,即异步):

    select object_NAME(c.object_id), c.name, t.name, c.max_length
    from sys.columns c
    INNER JOIN sys.types t
        ON t.system_type_id = c.system_type_id
    

    另一方面,连接上的GetSchema方法也是如此:

    DataTable columns = connection.GetSchema(SqlClientMetaDataCollectionNames.Columns, restrictions);
    foreach (DataRow row in columns.Rows)
    {
        string columnName = row[3].ToString();
        string columnDataType = row[7].ToString();   
        string columnDataTypeLen = row[8].ToString();
    }
    

    哪种方法更好用?看起来第二个应该更快 - 我是对的吗? 性能怎么样?

1 个答案:

答案 0 :(得分:0)

使用任一方法并缓存结果

元数据在正常操作下不会改变,因此性能不是问题