我需要为数据库中的每个表检索以下信息:
可能的方法是运行查询(甚至可以使用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();
}
哪种方法更好用?看起来第二个应该更快 - 我是对的吗? 性能怎么样?
答案 0 :(得分:0)
使用任一方法并缓存结果
元数据在正常操作下不会改变,因此性能不是问题