データベース内の各テーブルについて、次の情報を取得する必要があります。
- すべての列名
- 各列の型
- タイプ最大長
そのために可能な方法は、クエリを実行することです (await、つまり async を使用して実行することもできます):
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();
}
どちらの方法を使用するのが良いですか? 2 番目の方が速いように見えますが、そうですか? パフォーマンスはどうですか?