1

データベース内の各テーブルについて、次の情報を取得する必要があります。

  1. すべての列名
  2. 各列の型
  3. タイプ最大長

そのために可能な方法は、クエリを実行することです (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 番目の方が速いように見えますが、そうですか? パフォーマンスはどうですか?

4

1 に答える 1

0

いずれかの方法を使用して結果をキャッシュする

通常の運用ではメタデータは変化しないため、パフォーマンスは問題ありません

于 2014-02-27T07:14:20.593 に答える