Megosztás:


Névterek (Entity SQL)

Az Entity SQL névtereket vezet be, hogy elkerülje a globális azonosítók, például a típusnevek, az entitáskészletek, a függvények stb. névütközését. Az Entity SQL névtértámogatása hasonló a .NET-keretrendszer névtértámogatásához.

Az Entity SQL a USING záradék két formáját biztosítja: minősített névtereket (ahol rövidebb aliast ad meg a névtérhez) és a nem minősített névtereket, az alábbi példában látható módon:

USING System.Data;

USING tsql = System.Data;

Névfeloldási szabályok

Ha egy azonosító nem oldható fel a helyi hatókörökben, az Entity SQL megpróbálja megtalálni a nevet a globális hatókörökben (a névterekben). Az entity SQL először megpróbálja egyezni az azonosítóval (előtaggal) az egyik minősített névtérrel. Ha egyezés van, az Entity SQL megpróbálja feloldani a megadott névtér többi azonosítóját. Ha nem talál egyezést, a rendszer kivételt jelez.

Ezután az Entity SQL megpróbálja keresni az azonosítóhoz tartozó összes nem minősített névteret (a prologban megadva). Ha az azonosító pontosan egy névtérben található, a rendszer ezt a helyet adja vissza. Ha egynél több névtér egyezik az azonosítóval, a rendszer kivételt jelez. Ha az azonosítóhoz nem azonosítható névtér, az Entity SQL átadja a nevet a következő külső hatókörnek (a DbCommand vagy DbConnection objektumnak), ahogyan az az alábbi példában látható:

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

Különbségek a .NET-keretrendszertől

A .NET-keretrendszerben részben minősített névtereket használhat. Az entity SQL ezt nem engedélyezi.

ADO.NET használat

A lekérdezések ADO.NET DbCommand objektumokon keresztül vannak kifejezve. DbCommand objektumok objektumok fölé DbConnection építhetők. A névterek az objektumok és DbConnection az DbCommand objektumok részeként is megadhatóak. Ha az Entity SQL nem tud feloldani egy azonosítót magában a lekérdezésben, a külső névterek mintavételezhetők (hasonló szabályok alapján).

Lásd még