1

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

  1. 所有列名
  2. 对于每一列,它的类型
  3. 类型最大长度

可能的方法是运行一个查询(甚至可以使用等待执行它,即异步):

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();
}

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

4

1 回答 1

0

使用任一方法并缓存结果

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

于 2014-02-27T07:14:20.593 回答