Sdílet prostřednictvím


Připojovací řetězce v ADO.NET Entity Frameworku

Připojovací řetězec obsahuje informace o inicializaci, které se předávají jako parametr zprostředkovatele dat do zdroje dat. Syntaxe závisí na zprostředkovateli dat a během pokusu o otevření připojení se analyzuje připojovací řetězec. Připojovací řetězce používané rozhraním Entity Framework obsahují informace používané pro připojení k podkladovému poskytovateli dat ADO.NET, který podporuje Entity Framework. Obsahují také informace o požadovaném modelu a souborech mapování.

Připojovací řetězec používá zprostředkovatel EntityClient při přístupu k modelu a mapování metadat a připojování ke zdroji dat. K připojovacímu řetězci lze přistupovat nebo jej nastavit prostřednictvím ConnectionString vlastnosti EntityConnection. Třídu EntityConnectionStringBuilder lze použít k programovému vytvoření nebo k přístupu k parametrům v připojovacím řetězci.

Nástroje Entity Data Model generují připojovací řetězec, který je uložený v konfiguračním souboru aplikace. ObjectContext načte tyto informace o připojení automaticky při vytváření dotazů na objekty. K EntityConnection, který používá instance ObjectContext, lze přistupovat z vlastnosti Connection.

Syntaxe připojovacího řetězce

Další informace o obecné syntaxi pro připojovací řetězec najdete v tématu Syntaxe připojovacího řetězce | Připojovací řetězce v ADO.NET

Parametry připojovacího řetězce

Následující tabulka uvádí platné názvy hodnot klíčových slov v tabulce ConnectionString.

Klíčové slovo Popis
Provider Vyžaduje se, pokud klíčové slovo Name není zadáno. Název zprostředkovatele, který slouží k načtení objektu DbProviderFactory pro podkladového zprostředkovatele. Tato hodnota je konstantní.

Name Pokud klíčové slovo není součástí připojovacího řetězce entity, je vyžadována neprázdná hodnota pro klíčové slovo Provider. Toto klíčové slovo se vzájemně vylučuje s klíčovým slovem Name.
Provider Connection String Nepovinné. Určuje připojovací řetězec konkrétního poskytovatele, který se předává podkladovému zdroji dat. Řetězec připojení obsahuje platné páry klíčových slov a hodnot pro zprostředkovatele dat. Při vyhodnocování zdrojem dat způsobí neplatná Provider Connection String chybu za běhu programu.

Toto klíčové slovo se vzájemně vylučuje s klíčovým slovem Name.

Ujistěte se, že správně escape hodnoty podle obecné syntaxe připojovacích řetězců ADO.NET. Zvažte například následující připojovací řetězec: Server=serverName; User ID = userID. Musí být escapováno, protože obsahuje středník. Protože neobsahuje dvojité uvozovky, mohou být použity pro escapování:

Provider Connection String ="Server=serverName; User ID = userID";
Metadata Vyžaduje se, pokud klíčové slovo Name není zadáno. Seznam adresářů, souborů a umístění prostředků oddělených svislítkem, kde se mají hledat metadata a informace o mapování. Následuje příklad:

Metadata=

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

Prázdné mezery na každé straně oddělovače potrubí jsou ignorovány.

Toto klíčové slovo se vzájemně vylučuje s klíčovým slovem Name.
Name Aplikace může volitelně zadat název připojení v konfiguračním souboru aplikace, který poskytuje potřebné hodnoty připojovacího řetězce ve formátu klíč/hodnota. V takovém případě je nemůžete zadat přímo do připojovacího řetězce. Klíčové Name slovo není v konfiguračním souboru povolené.

Name Pokud není klíčové slovo součástí připojovacího řetězce, je vyžadována neprázdná hodnota pro klíčové slovo Provider.

Toto klíčové slovo se vzájemně vylučuje se všemi ostatními klíčovými slovy připojovacích řetězců.

Umístění souborů modelu a mapování

Tento Metadata parametr obsahuje seznam umístění, kde EntityClient zprostředkovatel hledá soubory modelu a mapování. Soubory modelu a mapování se často nasazují ve stejném adresáři jako spustitelný soubor aplikace. Tyto soubory lze také nasadit do konkrétního umístění nebo zahrnout jako vložený prostředek v aplikaci.

Vložené prostředky jsou specifikovány následovně:

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

Pro definování umístění vloženého prostředku jsou k dispozici následující možnosti:

Možnost Popis
assemblyFullName Úplný název sestavení s vloženým prostředkem. Název zahrnuje jednoduchý název, název verze, podporovanou kulturní verzi a veřejný klíč následujícím způsobem:

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

Prostředky mohou být vloženy do libovolného sestavení, které je přístupné aplikací.

Pokud zadáte zástupný znak (*), modul runtime Entity Frameworku assemblyFullName vyhledá prostředky v následujících umístěních v tomto pořadí:

1. Volající sestavení.
2. Odkazovaná sestavení.
3. Sestavení v adresáři bin aplikace.

Pokud soubory nejsou v jednom z těchto umístění, dojde k vyvolání výjimky. Poznámka: Při použití zástupných znaků (*) musí Entity Framework projít všechna sestavení a hledat prostředky se správným jménem. Pokud chcete zvýšit výkon, místo zástupného znaku zadejte název sestavení.
resourceName Název zahrnutého prostředku, například AdventureWorksModel.csdl. Služby metadat budou hledat pouze soubory nebo prostředky s jedním z následujících rozšíření: .csdl, .ssdl nebo .msl. Pokud resourceName není zadán, načtou se všechny zdroje metadat. Prostředky by měly mít jedinečné názvy v rámci sestavení. Pokud je v sestavení definováno více souborů se stejným názvem v různých adresářích, resourceName musí před názvem prostředku obsahovat strukturu složek, například FolderName.FileName.csdl.

resourceName není vyžadována, pokud zadáte zástupný znak (*) pro assemblyFullName.

Poznámka:

Pokud chcete zvýšit výkon, vložte prostředky do volajícího sestavení s výjimkou jiných než webových scénářů, kdy ve volajícím sestavení neexistuje žádný odkaz na podkladové soubory mapování a metadat.

Následující příklad načte všechny soubory modelu a mapování ve volajícím sestavení, odkazovaných sestaveních a dalších sestaveních v adresáři bin aplikace.

Metadata=res://*/

Následující příklad načte soubor model.csdl ze sestavení AdventureWorks a načte soubory model.ssdl a model.msl z výchozího adresáře spuštěné aplikace.

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

Následující příklad načte tři zadané prostředky z konkrétního sestavení.

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

Následující příklad načte všechny vložené prostředky s rozšířeními .csdl, .msl a .ssdl ze sestavení.

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

Následující příklad načte všechny zdroje v relativní cestě k souboru, a také v "datadir\metadata\" z umístění načteného sestavení.

Metadata=datadir\metadata\

Následující příklad načte všechny prostředky v relativní cestě k souboru z načteného umístění sestavení.

Metadata=.\

Podpora náhradního řetězce |DataDirectory| a kořenového operátoru '~' webové aplikace.

DataDirectory a operátor ~ se používají v ConnectionString rámci Metadata a Provider Connection String klíčových slov. Přeposílá EntityConnection do DataDirectory a operátor ~ do poskytovatele úložiště.

Období Popis
&#124;DataDirectory&#124; Představuje relativní cestu k souborům mapování a metadat. Toto je hodnota, která je nastavena prostřednictvím metody AppDomain.SetData("DataDirectory", objValue). Náhradní řetězec DataDirectory musí být obklopen znaky svislítka a nesmí být mezi jeho názvem a znaky svislítka žádné mezery. Název DataDirectory není citlivý na velikost písmen.

Pokud musí být fyzický adresář s názvem "DataDirectory" předán jako člen seznamu cest metadat, přidejte prázdné znaky na obě strany názvu. Například: Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2". Aplikace ASP.NET přiřazuje |DataDirectory| na složku "<kořenovou složku aplikace>/app_data".
~ Přeloží se do kořenového adresáře webové aplikace. Znak ~ na úvodní pozici je vždy interpretován jako kořenový operátor webové aplikace (~), ačkoli může představovat platný místní podadresář. Pokud chcete odkazovat na takový místní podadresář, měl by uživatel explicitně předat ./~.

DataDirectory a operátor ~ by měl být zadán pouze na začátku cesty, nejsou vyřešeny na žádné jiné pozici. Entity Framework se pokusí vyřešit ~/data, ale bude považovat /data/~ za fyzickou cestu.

Cesta, která začíná operátorem DataDirectory nebo ~, se nemůže přeložit na fyzickou cestu mimo větev definovanou operátory DataDirectory a ~. Například následující cesty budou vyřešeny: ~, ~/data, ~/bin/Model/SqlServer. Následující cesty nelze vyřešit: ~/.., ~/../other.

DataDirectory a operátor ~ lze rozšířit tak, aby zahrnoval podadresály následujícím způsobem: |DataDirectory|\Model, ~/bin/Model

Vyhodnocení náhradního řetězce DataDirectory a operátoru ~ není rekurzivní. Pokud například znak DataDirectory zahrnete do ~, dojde k výjimce. Tím se zabrání nekonečné rekurze.

Viz také