B. スキーマ情報の入手
アプリケーションは、データベースのメタデータを検索して返すよう、データ プロバイダーに要求することができます。各データ プロバイダー固有のスキーマ コレクションは、テーブルや列などのデータベース スキーマ要素を公開します。データ プロバイダーは Connection クラスの GetSchema メソッドを使用します。スキーマ情報は GetSchemaTable メソッドによって返される列で説明されているように、結果セットからも取得できます。
データ プロバイダーにもプロバイダー固有のスキーマ コレクションが含まれています。スキーマ コレクション名 MetaDataCollections を使用すると、サポートされるスキーマ コレクションの一覧と、それらがサポートする制限の数を返すことができます。
GetSchemaTable メソッドによって返される列
PsqlDataReader が開いている間は、結果セットからスキーマ情報を取得することができます。PsqlDataReader.GetSchemaTable() で生成された結果セットは、次の表に示される列を、示されている順序で返します。
GetSchema メソッドによるスキーマ メタデータの取得
アプリケーションでデータ プロバイダーおよびデータ ソースに関するスキーマ メタデータを取得する場合は、Connection オブジェクトの GetSchema メソッドを使用を使用します。各プロバイダーには 5 つの標準メタデータ コレクションも含め、多数のスキーマ コレクションが実装されています。
追加のコレクションを指定したら、データ プロバイダーからスキーマ情報を返す機能がサポートされるようにしておく必要があります。
データ プロバイダーでサポートされるその他のコレクションの詳細については、Additional スキーマ コレクションを参照してください。
メモ:  各 ColumnName で必要なデータ型など、さらなるバックグラウンド機能要件については、.NET Framework ドキュメントを参照してください。
MetaDataCollections スキーマ コレクション
MetaDataCollections スキーマ コレクションは、ログインしているユーザーが利用できるスキーマ コレクションの一覧です。MetaDataCollection は、次の表に示されているサポートされる列を任意の順序で返すことができます。
DataSourceInformation スキーマ コレクション
DataSourceInformation スキーマ コレクションは、次の表に示されているサポートされる列を任意の順序で返すことができます。1 行のみ返されることに注意してください。
DataTypes コレクション
次の表では、DataTypes スキーマ コレクションでサポートされる列について説明します。列は任意の順序で取得できます。
精度 10、小数位 2 の DECIMAL 列を作成するテキスト コマンドでは、CreateFormat 列の値を "DECIMAL({0},{1})" とすることができます。完全な型指定は DECIMAL(10,2) となります。
それ以外の場合、これは DBNull.Value になります。
それ以外の場合、これは DBNull.Value になります。
ReservedWords コレクション
このスキーマ コレクションは、データ プロバイダーが接続するデータベースで予約されている語句についての情報を公開します。次の表では、データ プロバイダーがサポートする列について説明します。
Restrictions コレクション
Restrictions スキーマ コレクションは、現在データベースに接続しているデータ プロバイダーでサポートされる制限に関する情報を公開します。次の表では、データ プロバイダーから返される列について説明します。列は任意の順序で取得できます。
ADO.NET データ プロバイダーは標準化された名前を制限に使用します。データ プロバイダーが Schema メソッドの制限をサポートしている場合は、制限に対して常に同じ名前を使用します。
制限値の大文字小文字の区別は基になるデータベースによって決定されますが、DataSourceInformation コレクションの IdentifierCase 値および QuotedIdentifierCase 値によっても決定することができます(DataSourceInformation スキーマ コレクションを参照してください)。
サポートされる追加のスキーマ コレクションそれぞれに適用する制限については、Additional スキーマ コレクションを参照してください。
Additional スキーマ コレクション
Zen ADO.NET データ プロバイダーは、以下に示す追加のスキーマ コレクションをサポートしています。
Columns スキーマ コレクション
説明:Columns スキーマ コレクションは、指定したユーザーがアクセスできるカタログに定義されているテーブル(ビューも含む)の列を識別します。次の表は、指定したユーザーがアクセスできるカタログに定義されているテーブルの列を示します。
制限の数:3
使用可能な制限:TABLE_CATALOG、TABLE_NAME、COLUMN_NAME
ソート順:TABLE_CATALOG、TABLE_NAME、ORDINAL_POSITION
 
.NET Framework データ型1

1
クラスはすべて System.XXX です。たとえば、System.String となります。

ForeignKeys スキーマ コレクション
説明:ForeignKeys スキーマ コレクションは、指定したユーザーによってカテゴリ内に定義された外部キー列を識別します。
制限の数:2
使用可能な制限:FK_TABLE_CATALOG、PK_TABLE_NAME
ソート順:FK_TABLE_CATALOG、FK_TABLE_NAME
 
.NET Framework データ型1

1
クラスはすべて System.XXX です。たとえば、System.String となります。

Indexes スキーマ コレクション
説明:Indexes スキーマ コレクションは、指定したユーザーが所有しているカテゴリ内に定義されたインデックスを識別します。
制限の数:2
使用可能な制限:TABLE_CATALOG、TABLE_NAME
ソート順:UNIQUE、TYPE、INDEX、CATALOG、INDEX_NAME、ORDINAL_POSITION
 
.NET Framework データ型1

1
クラスはすべて System.XXX です。たとえば、System.String となります。

PrimaryKeys スキーマ コレクション
説明:PrimaryKeys スキーマ コレクションは、指定したユーザーによってカテゴリ内に定義された主キー列を識別します。
制限の数:2
使用可能な制限:TABLE_CATALOG、TABLE_NAME
ソート順:TABLE_CATALOG、TABLE_NAME
 
.NET Framework データ型1

1
クラスはすべて System.XXX です。たとえば、System.String となります。

ProcedureParameters スキーマ コレクション
説明:ProcedureParameters スキーマ コレクションは、Procedures コレクションの一部であるプロシージャのパラメーターおよびリターン コードに関する情報を返します。
制限の数:3
使用可能な制限:PROCEDURE_CATALOG、PROCEDURE_NAME、PARAMETER_NAME
ソート順:PROCEDURE_CATALOG、PROCEDURE_NAME、ORDINAL_POSITION
 
.NET Framework データ型1
それ以外の場合、これは DbNull になります。

1
クラスはすべて System.XXX です。たとえば、System.String となります。

Procedures スキーマ コレクション
説明:Procedures スキーマ コレクションは、カタログに定義されているプロシージャを識別します。可能であれば、接続ユーザーが EXECUTE 権限を持っているプロシージャのみを返すようにしてください。
制限の数:2
使用可能な制限:PROCEDURE_CATALOG、PROCEDURE_NAME、PROCEDURE_TYPE
ソート順:PROCEDURE_CATALOG、PROCEDURE_NAME
 
.NET Framework データ型1

1
クラスはすべて System.XXX です。たとえば、System.String となります。

TablePrivileges スキーマ コレクション
説明:TablePrivileges スキーマ コレクションは、カタログに定義されているテーブルについて、指定したユーザーが利用できる、つまり許可されている権限を識別します。
制限の数:3
使用可能な制限:TABLE_CATALOG、TABLE_NAME、GRANTEE
ソート順:TABLE_CATALOG、TABLE_NAME、PRIVILEGE_TYPE
 
型インジケーター1

1
クラスはすべて System.XXX です。たとえば、System.String となります。

Tables スキーマ コレクション
説明:Tables スキーマ コレクションは、指定したユーザーがアクセスできるカタログに定義されているテーブル(ビューも含む)を識別します。
制限の数:3
使用可能な制限:TABLE_CATALOG、TABLE_NAME、TABLE_TYPE
ソート順:TABLE_TYPE、TABLE_CATALOG、TABLE_NAME
 
.NET Framework データ型1

1
クラスはすべて System.XXX です。たとえば、System.String となります。

Views スキーマ コレクション
説明:Views スキーマ コレクションは、指定したユーザーがアクセスできるカタログに定義されているビューを識別します。
制限の数:2
使用可能な制限:TABLE_CATALOG、TABLE_NAME
ソート順:TABLE_CATALOG、TABLE_NAME
 
型インジケーター1

1
クラスはすべて System.XXX です。たとえば、System.String となります。