Kapcsolati sztringek a ADO.NET entitás-keretrendszerben

A kapcsolati sztring inicializálási információkat tartalmaz, amelyeket paraméterként ad át egy adatszolgáltatótól egy adatforrásnak. A szintaxis az adatszolgáltatótól függ, és a kapcsolati sztring elemzése a kapcsolat megnyitásának kísérlete közben történik. Az Entity Framework által használt kapcsolati sztringek az entitás-keretrendszert támogató mögöttes ADO.NET adatszolgáltatóhoz való csatlakozáshoz használt információkat tartalmaznak. A szükséges modell- és leképezési fájlokra vonatkozó információkat is tartalmaznak.

A kapcsolati sztring az EntityClient-szolgáltató használja a modellhez való hozzáféréshez, a metaadatok leképezéséhez és az adatforráshoz való csatlakozáshoz. A kapcsolati sztring a ConnectionStringEntityConnection tulajdonságán keresztül elérhető vagy beállítható. Az EntityConnectionStringBuilder osztály segítségével programozással hozhat létre vagy érhet el paramétereket a kapcsolati karakterláncban.

Az Entity Data Model eszközei létrehoznak egy kapcsolati sztring, amely az alkalmazás konfigurációs fájljában van tárolva. ObjectContext objektum-lekérdezések létrehozásakor automatikusan lekéri ezt a kapcsolati információt. A EntityConnection által használt ObjectContext a Connection tulajdonságból érhetők el.

Kapcsolati karakterlánc szintaxisa

A kapcsolati sztring általános szintaxisáról a Kapcsolati sztring szintaxisa | Kapcsolati sztringek az ADO.NET-ben.

Kapcsolati sztring paraméterei

Az alábbi táblázat a kulcsszóértékek érvényes nevét sorolja fel a ConnectionString.

Kulcsszó Leírás
Provider Kötelező, ha a Name kulcsszó nincs megadva. A szolgáltató neve, amely a mögöttes szolgáltató objektumának DbProviderFactory lekérésére szolgál. Ez az érték állandó.

Ha a Name kulcsszó nem szerepel egy entitás kapcsolati sztringjében, akkor a Provider kulcsszónak nem üres értéket kell megadni. Ez a kulcsszó kölcsönösen kizáró kapcsolatban áll a Name kulcsszóval.
Provider Connection String Opcionális. Megadja a szolgáltató-specifikus kapcsolati karakterláncot, amit a mögöttes adatforrásnak átadnak. Ez a kapcsolati sztring érvényes kulcsszó-érték párokat tartalmaz az adatszolgáltatóhoz. Az érvénytelen Provider Connection String hiba futásidejű hibát fog okozni, ha az adatforrás kiértékeli.

Ez a kulcsszó kölcsönösen kizáró kapcsolatban áll a Name kulcsszóval.

Ügyeljen arra, hogy a ADO.NET kapcsolati sztring általános szintaxisa szerint elkerülje az értéket. Vegyük például a következő kapcsolati sztring: Server=serverName; User ID = userID. Meg kell szökni, mert pontosvesszőt tartalmaz. Mivel nem tartalmaz dupla idézőjeleket, ezek használhatók karakterszökés céljára.

Provider Connection String ="Server=serverName; User ID = userID";
Metadata Kötelező, ha a Name kulcsszó nincs megadva. A címtárak, fájlok és erőforráshelyek csővel tagolt listája, amelyben metaadatokat és leképezési információkat kereshet. Például:

Metadata=

c:\model | c:\model\sql\mapping.msl;

A rendszer figyelmen kívül hagyja a csőelválasztó mindkét oldalán lévő üres szóközöket.

Ez a kulcsszó kölcsönösen kizáró kapcsolatban áll a Name kulcsszóval.
Name Az alkalmazás opcionálisan megadhatja a kapcsolat nevét egy olyan alkalmazáskonfigurációs fájlban, amely tartalmazza a szükséges kulcs/érték kapcsolat sztring értékeket. Ebben az esetben nem adhatja meg őket közvetlenül a kapcsolati láncban. A Name kulcsszó nem engedélyezett konfigurációs fájlban.

Ha a Name kulcsszó nem szerepel a kapcsolati sztringben, a Szolgáltató kulcsszónak nem üres értéket kell kapnia.

Ez a kulcsszó kizárja az összes többi kapcsolati lánc kulcsszót.

Modell- és leképezési fájlhelyek

A Metadata paraméter azon helyek listáját tartalmazza, ahol a EntityClient szolgáltató modell- és leképezési fájlokat kereshet. A modell- és leképezési fájlok gyakran ugyanabban a könyvtárban vannak üzembe helyezve, mint az alkalmazás végrehajtható fájlja. Ezek a fájlok egy adott helyen is üzembe helyezhetők, vagy beágyazott erőforrásként is elhelyezhetők az alkalmazásban.

A beágyazott erőforrások a következőképpen vannak megadva:

Metadata=res://<assemblyFullName>/<resourceName>

Beágyazott erőforrás helyének meghatározásához az alábbi lehetőségek állnak rendelkezésre:

Lehetőség Leírás
assemblyFullName A beágyazott erőforrással rendelkező szerelvény teljes neve. A név az alábbi egyszerű nevet, verziónevet, támogatott kultúrát és nyilvános kulcsot tartalmazza:

ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Az erőforrások az alkalmazás által elérhető bármely szerelvénybe beágyazhatók.

Ha helyettesítő karaktert (*) assemblyFullNamead meg, az Entity Framework futtatókörnyezet a következő helyeken keres erőforrásokat ebben a sorrendben:

1. A hívó szerelvény.
2. A hivatkozott szerelvények.
3. Az alkalmazás bin könyvtárában lévő szerelvények.

Ha a fájlok nem ezen helyek egyikén találhatók, a rendszer kivételt fog kivenni. Megjegyzés: Helyettesítő karakterek (*) használata esetén az Entity Frameworknek végig kell néznie a megfelelő nevű erőforrások összes szerelvényét. A teljesítmény javítása érdekében a helyettesítő karakter helyett adja meg az összeállítás nevét.
resourceName A mellékelt erőforrás neve, például AdventureWorksModel.csdl. A metaadat-szolgáltatások csak a következő bővítményekkel rendelkező fájlokat vagy erőforrásokat keresik: .csdl, .ssdl vagy .msl. Ha resourceName nincs megadva, az összes metaadat-erőforrás betöltődik. Az erőforrásoknak egyedi névvel kell rendelkezniük egy szerelvényen belül. Ha több azonos nevű fájl van definiálva a szerelvény különböző könyvtáraiban, az resourceName erőforrás neve előtti mappastruktúrát kell tartalmaznia, például FolderName.FileName.csdl.

resourceName nem szükséges, ha helyettesítő karaktert (*) ad meg a assemblyFullName számára.

Megjegyzés

A teljesítmény javítása érdekében ágyazzon be erőforrásokat a hívó szerelvénybe, kivéve azokat a nem webes forgatókönyveket, amelyekben nincs hivatkozás a hívó szerelvény mögöttes leképezési és metaadatfájljaira.

Az alábbi példa betölti a hívó szerelvény összes modell- és leképezési fájlját, a hivatkozott szerelvényeket és más szerelvényeket egy alkalmazás bin könyvtárában.

Metadata=res://*/

Az alábbi példa betölti a model.csdl fájlt az AdventureWorks-szerelvényből, és betölti a model.ssdl és a model.msl fájlokat a futó alkalmazás alapértelmezett könyvtárából.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|model.ssdl|model.msl

Az alábbi példa betölti a három megadott erőforrást az adott szerelvényből.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|
res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.ssdl|
res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.msl

Az alábbi példa az összes, .csdl, .msl és .ssdl kiterjesztésű beágyazott erőforrást betölti az assemblétől.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/

Az alábbi példa betölti a relatív fájl elérési út összes erőforrását, valamint a "datadir\metadata\" könyvtárat a betöltött assembly helyéről.

Metadata=datadir\metadata\

Az alábbi példa betölti a relatív fájl elérési útjának összes erőforrását a betöltött szerelvény helyéről.

Metadata=.\

A |DataDirectory| helyettesítő string és a webalkalmazás-gyökér operátor (~) támogatása

DataDirectoryés a ~ operátort a rendszer a ConnectionString kulcsszavak és Metadata a Provider Connection String kulcsszavak részeként használja. A EntityConnection továbbítja a DataDirectory és a ~ operátort a MetadataWorkspace-nek, valamint a tárolószolgáltatónak.

Időszak Leírás
&#124;DataDirectory&#124; Feloldja a leképezési és metaadatfájlok relatív elérési útját. Az érték, amelyet a AppDomain.SetData("DataDirectory", objValue) metódussal állít be. A DataDirectory helyettesítési sztringet a pipe karakterekkel kell körülvenni, és a nevét és a pipe karakterek között nem lehet szóköz. A DataDirectory név nem érzékeny a kis- és nagybetűkre.

Ha egy "DataDirectory" nevű fizikai könyvtárat kell átadni a metaadat-elérési utak listájának tagjaként, adjon hozzá szóközt a név egyik vagy mindkét oldalához. Például: Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2" Egy ASP.NET alkalmazás feloldja |DataDirectory| az "<alkalmazásgyökér>/app_data" mappába.
~ Feloldja a webalkalmazás gyökerét. A ~ karaktert a rendszer mindig a webalkalmazás fő operátoraként (~) értelmezi, bár érvényes helyi alkönyvtárat jelölhet. Egy ilyen helyi alkönyvtárra való hivatkozáshoz a felhasználónak kifejezetten át kell adnia ./~.

DataDirectory és a ~ operátorokat csak az elérési út elején kell megadni, más helyeken nem oldódnak fel. Az entitás-keretrendszer megpróbál feloldani ~/data, de fizikai elérési útként fogja kezelni /data/~ .

Az DataDirectory elemmel vagy a ~ operátorral kezdődő elérési út nem oldható fel a DataDirectory ágán kívüli fizikai elérési útra, amely a ~ operátort is tartalmazza. A következő elérési utak például érvényesülnek: ~, ~/data, ~/bin/Model/SqlServer. A következő elérési utak nem oldhatók fel: ~/.., ~/../other.

DataDirectory és a ~ operátor kiterjeszthető alkönyvtárakra is, az alábbiak szerint: |DataDirectory|\Model, ~/bin/Model

A helyettesítési sztring DataDirectory és a ~ operátor felbontása nem rekurzív. Ha például DataDirectory a karaktert ~ is tartalmazza, kivétel történik. Ez megakadályozza a végtelen rekurziót.

Lásd még