Dela via


Namnområden (entitets-SQL)

Entitets-SQL introducerar namnområden för att undvika namnkonflikter för globala identifierare, till exempel typnamn, entitetsuppsättningar, funktioner och så vidare. Stöd för namnområde i Entity SQL liknar stöd för namnområde i .NET Framework.

Entitets-SQL innehåller två former av USING-satsen: kvalificerade namnområden (där ett kortare alias anges för namnområdet) och okvalificerade namnområden, enligt följande exempel:

USING System.Data;

USING tsql = System.Data;

Namnmatchningsregler

Om det inte går att matcha en identifierare i de lokala omfången försöker entitets-SQL hitta namnet i de globala omfången (namnrymderna). Entitets-SQL försöker först matcha identifieraren (prefixet) med något av de kvalificerade namnrymderna. Om det finns en matchning försöker Entity SQL matcha resten av identifieraren i det angivna namnområdet. Om ingen matchning hittas utlöses ett undantag.

Därefter försöker Entitets-SQL söka efter identifieraren i alla okvalificerade namnområden (som anges i prologen). Om identifieraren kan finnas i exakt ett namnområde returneras den platsen. Om fler än ett namnområde har en matchning för identifieraren genereras ett undantag. Om inget namnområde kan identifieras för identifieraren skickar Entitets-SQL namnet till nästa yttre omfång ( DbCommand eller-objektet DbConnection ), enligt följande exempel:

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

Skillnader från .NET Framework

I .NET Framework kan du använda delvis kvalificerade namnområden. Entitets-SQL tillåter inte detta.

ADO.NET användning

Frågor uttrycks via ADO.NET DbCommand objekt. DbCommand objekt kan byggas över DbConnection objekt. Namnområden kan också anges som en del av objekten DbCommand och DbConnection . Om entitets-SQL inte kan matcha en identifierare i själva frågan avsöks de externa namnrymderna (baserat på liknande regler).

Se även