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í řetězec lze přistupovat nebo je nastavit prostřednictvím ConnectionString vlastnosti EntityConnection. Třídu EntityConnectionStringBuilder lze použít k programovému vytvoření nebo přístupových parametrů v připojovací řetězec.

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 instanci lze ObjectContext přistupovat z Connection vlastnosti.

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, Name pokud není zadané klíčové slovo. 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í entity připojovací řetězec, je vyžadována neprázdná hodnota pro Provider klíčové slovo. Toto klíčové slovo se vzájemně vylučují 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. Tato připojovací řetězec obsahuje platné páry klíčových slov a hodnot pro zprostředkovatele dat. Neplatná Provider Connection String chyba způsobí chybu za běhu při vyhodnocování zdrojem dat.

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

Ujistěte se, že uchycení hodnoty podle obecné syntaxe ADO.NET připojovací řetězec s. Zvažte například následující připojovací řetězec: Server=serverName; User ID = userID. Musí být utekl, protože obsahuje středník. Vzhledem k tomu, že neobsahuje dvojité uvozovky, mohou být použity pro zapouzdření:

Provider Connection String ="Server=serverName; User ID = userID";
Metadata Vyžaduje se, Name pokud není zadané klíčové slovo. Seznam adresářů, souborů a umístění prostředků s oddělovači, ve kterých 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čují s klíčovým slovem Name .
Name Aplikace může volitelně zadat název připojení v konfiguračním souboru aplikace, který poskytuje požadované klíčové slovo nebo hodnotu připojovací řetězec hodnoty. V takovém případě je nemůžete zadat přímo v připojovací řetězec. Klíčové Name slovo není v konfiguračním souboru povolené.

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

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

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

Tento Metadata parametr obsahuje seznam umístění, EntityClient kde 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 se zadají takto:

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 jazykovou 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 (*), assemblyFullNamemodul runtime Entity Framework 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í, vyvolá se výjimka. Poznámka: Při použití zástupných znaků (*) musí Entity Framework projít všechna sestavení pro prostředky se správným názvem. 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 prostředky 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í do volajícího sestavení, odkazovaných sestavení a dalších sestavení 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 prostředky v relativní cestě k souboru plus "datadir\metadata\" z načteného umístění 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 |DataDirectory| Řetězec nahrazení a kořenový operátor 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 DataDirectory operátor ~ do MetadataWorkspace a zprostředkovatele úložiště.

Období Popis
&#124;DataDirectory&#124; Překládá se na relativní cestu k souborům mapování a metadat. Toto je hodnota, která je nastavena AppDomain.SetData("DataDirectory", objValue) prostřednictvím metody. Náhradní DataDirectory řetězec musí být obklopen znaky svislé znaky a nesmí být mezi jeho názvem a znaky svislé znaky prázdné mezery. Název DataDirectory nerozlišuje malá a velká písmena.

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 vyřeší |DataDirectory| do složky "<root>/app_data aplikace".
~ 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 začínající operátorem DataDirectory nebo operátorem ~ se nemůže přeložit na fyzickou cestu mimo větev DataDirectory operátoru ~. Například následující cesty budou vyřešeny: ~, ~/data, ~/bin/Model/SqlServer. Následující cesty se nepodaří 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

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

Viz také