次の方法で共有


名前空間 (Entity SQL)

型名、エンティティ セット、関数など、グローバル識別子の名前の競合を防ぐために、Entity SQL には名前空間が採用されています。Entity SQL における名前空間のサポートは、.NET Framework における名前空間のサポートと似ています。

次の例のように、Entity SQL では、2 とおりの形式で USING 句を指定できます。1 つは略称的な別名を指定する修飾名前空間、もう 1 つは別名を指定しない非修飾名前空間です。

USING System.Data;

USING tsql = System.Data;

名前解決ルール

ローカル スコープで識別子を解決できなかった場合、Entity SQL は名前をグローバル スコープ (名前空間) で特定しようと試みます。最初に、識別子 (プレフィックス) が修飾名前空間のいずれかと比較されます。一致が見つかった場合、Entity SQL は、指定された名前空間で、その識別子の残りの部分を解決しようと試みます。一致が見つからなかった場合は、例外がスローされます。

次に、Entity SQL は、すべての (プロローグに指定された) 非修飾名前空間から識別子を検索することを試みます。その識別子が属している名前空間を一意に特定できた場合は、その場所が返されます。同じ識別子に対して複数の名前空間が見つかった場合は、例外がスローされます。識別子に対応する名前空間を特定できなかった場合、Entity SQL は、次の例のように、識別子の名前を 1 つ外側のスコープ (DbCommand オブジェクトまたは DbConnection オブジェクト) に渡します。

SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)

.NET Framework との違い

.NET Framework では、部分的に修飾された名前空間を使用できますが、Entity SQL では、部分的に修飾された名前空間はサポートされません。

ADO.NET の使用法

クエリは ADO.NET の DbCommand オブジェクトを介して伝達されます。DbCommand オブジェクトは、DbConnection オブジェクト上に構築できます。名前空間を DbCommand オブジェクトや DbConnection オブジェクトの一部として指定することもできます。Entity SQL がクエリ内で識別子を解決できなかった場合、同様のルールに従って、外側の名前空間が調査されます。

参照

概念

Entity SQL リファレンス
Entity SQL の概要