Delen via


Verbindingsreeksen in het ADO.NET Entity Framework

Een verbindingsreeks bevat initialisatie-informatie die wordt doorgegeven als een parameter van een gegevensprovider aan een gegevensbron. De syntaxis is afhankelijk van de gegevensprovider en de verbindingsreeks wordt geparseerd tijdens de poging om een verbinding te openen. Verbindingsreeksen die worden gebruikt door entity framework bevatten informatie die wordt gebruikt om verbinding te maken met de onderliggende ADO.NET gegevensprovider die ondersteuning biedt voor Entity Framework. Ze bevatten ook informatie over het vereiste model en de toewijzingsbestanden.

De verbindingsreeks wordt gebruikt door de EntityClient-provider bij het openen van model- en toewijzingsmetagegevens en het maken van verbinding met de gegevensbron. De verbindingsreeks kan worden geopend of ingesteld via de ConnectionString eigenschap van EntityConnection. De EntityConnectionStringBuilder klasse kan worden gebruikt om programmatisch parameters te maken of te openen in de verbindingsreeks.

Met de hulpprogramma's voor entiteitsgegevensmodellen wordt een verbindingsreeks gegenereerd die is opgeslagen in het configuratiebestand van de toepassing. ObjectContext haalt deze verbindingsgegevens automatisch op bij het maken van objectquery's. Het EntityConnection gebruik door een ObjectContext exemplaar kan worden geopend vanuit de Connection eigenschap.

Syntaxis van verbindingsreeks

Zie de syntaxis verbindingsreeks van de verbindingsreeks | Verbindingsreeksen in ADO.NET.

Parameters voor verbindingsreeks

De volgende tabel bevat de geldige namen voor trefwoordwaarden in de ConnectionStringtabel .

Trefwoord Beschrijving
Provider Vereist als het Name trefwoord niet is opgegeven. De providernaam, die wordt gebruikt om het DbProviderFactory object voor de onderliggende provider op te halen. Deze waarde is constant.

Wanneer het Name trefwoord niet is opgenomen in een entiteit verbindingsreeks, is een niet-lege waarde voor het Provider trefwoord vereist. Dit trefwoord is wederzijds exclusief met het Name trefwoord.
Provider Connection String Optioneel. Hiermee geeft u de providerspecifieke verbindingsreeks die wordt doorgegeven aan de onderliggende gegevensbron. Deze verbindingsreeks bevat geldige trefwoord-/waardeparen voor de gegevensprovider. Een ongeldige Provider Connection String fout veroorzaakt een runtimefout wanneer deze wordt geëvalueerd door de gegevensbron.

Dit trefwoord is wederzijds exclusief met het Name trefwoord.

Zorg ervoor dat u de waarde escapet op basis van de algemene syntaxis van ADO.NET verbindingsreeks s. Denk bijvoorbeeld aan de volgende verbindingsreeks: Server=serverName; User ID = userID. Het moet worden ontsnapt omdat deze een puntkomma bevat. Omdat deze geen dubbele aanhalingstekens bevat, kunnen ze worden gebruikt voor escape-bewerkingen:

Provider Connection String ="Server=serverName; User ID = userID";
Metadata Vereist als het Name trefwoord niet is opgegeven. Een door sluistekens gescheiden lijst met mappen, bestanden en resourcelocaties waarin wordt gezocht naar metagegevens en toewijzingsgegevens. Hier volgt een voorbeeld:

Metadata=

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

Lege spaties aan elke zijde van het scheidingsteken voor pijpen worden genegeerd.

Dit trefwoord is wederzijds exclusief met het Name trefwoord.
Name De toepassing kan desgewenst de verbindingsnaam opgeven in een toepassingsconfiguratiebestand dat het vereiste trefwoord/de vereiste waarde verbindingsreeks waarden levert. In dit geval kunt u ze niet rechtstreeks in de verbindingsreeks leveren. Het Name trefwoord is niet toegestaan in een configuratiebestand.

Wanneer het Name trefwoord niet is opgenomen in de verbindingsreeks, is een niet-lege waarde voor het trefwoord Provider vereist.

Dit trefwoord sluiten elkaar wederzijds uit met alle andere verbindingsreeks trefwoorden.

Bestandslocaties modelleren en toewijzen

De Metadata parameter bevat een lijst met locaties voor de EntityClient provider om te zoeken naar model- en toewijzingsbestanden. Model- en toewijzingsbestanden worden vaak geïmplementeerd in dezelfde map als het uitvoerbare toepassingsbestand. Deze bestanden kunnen ook worden geïmplementeerd op een specifieke locatie of worden opgenomen als een ingesloten resource in de toepassing.

Ingesloten resources worden als volgt opgegeven:

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

De volgende opties zijn beschikbaar voor het definiëren van de locatie van een ingesloten resource:

Optie Omschrijving
assemblyFullName De volledige naam van een assembly met de ingesloten resource. De naam bevat als volgt de eenvoudige naam, versienaam, ondersteunde cultuur en openbare sleutel:

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

Resources kunnen worden ingesloten in elke assembly die toegankelijk is voor de toepassing.

Als u een jokerteken (*) assemblyFullNameopgeeft, zoekt de Entity Framework-runtime in deze volgorde naar resources op de volgende locaties:

1. De aanroepende assembly.
2. De assembly's waarnaar wordt verwezen.
3. De assembly's in de bin-map van een toepassing.

Als de bestanden zich niet op een van deze locaties bevinden, wordt er een uitzondering gegenereerd. Opmerking: Wanneer u jokerteken (*) gebruikt, moet het Entity Framework alle assembly's voor resources met de juiste naam bekijken. Als u de prestaties wilt verbeteren, geeft u de assemblynaam op in plaats van het jokerteken.
resourceName De naam van de opgenomen resource, zoals AdventureWorksModel.csdl. De metagegevensservices zoeken alleen naar bestanden of resources met een van de volgende extensies: .csdl, .ssdl of .msl. Als resourceName dit niet is opgegeven, worden alle metagegevensbronnen geladen. De resources moeten unieke namen hebben binnen een assembly. Als er meerdere bestanden met dezelfde naam zijn gedefinieerd in verschillende mappen in de assembly, moet de resourceName mapstructuur vóór de naam van de resource worden opgenomen, bijvoorbeeld FolderName.FileName.csdl.

resourceName is niet vereist wanneer u een jokerteken (*) opgeeft voor assemblyFullName.

Notitie

Als u de prestaties wilt verbeteren, sluit u resources in de aanroepende assembly in, behalve in niet-webscenario's waarbij er geen verwijzing is naar onderliggende toewijzings- en metagegevensbestanden in de aanroepende assembly.

In het volgende voorbeeld worden alle model- en toewijzingsbestanden in de aanroepende assembly, naar assembly's en andere assembly's in de bin-map van een toepassing geladen.

Metadata=res://*/

In het volgende voorbeeld wordt het bestand model.csdl uit de AdventureWorks-assembly geladen en worden de bestanden model.ssdl en model.msl uit de standaardmap van de actieve toepassing geladen.

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

In het volgende voorbeeld worden de drie opgegeven resources uit de specifieke assembly geladen.

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

In het volgende voorbeeld worden alle ingesloten resources geladen met de extensies .csdl, .msl en .ssdl uit de assembly.

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

In het volgende voorbeeld worden alle resources in het relatieve bestandspad plus 'datadir\metadata\' van de geladen assemblylocatie geladen.

Metadata=datadir\metadata\

In het volgende voorbeeld worden alle resources in het relatieve bestandspad van de geladen assemblylocatie geladen.

Metadata=.\

Ondersteuning voor |DataDirectory | Vervangingstekenreeks en de hoofdoperator van de webtoepassing (~)

DataDirectory en de ~-operator worden gebruikt in het ConnectionString onderdeel van de Metadata en Provider Connection String trefwoorden. De EntityConnection operator ~ wordt doorgestuurd DataDirectory naar MetadataWorkspace respectievelijk de winkelprovider en de winkelprovider.

Term Omschrijving
&#124;DataDirectory&#124; Wordt omgezet in een relatief pad naar een toewijzings- en metagegevensbestanden. Dit is de waarde die is ingesteld via de AppDomain.SetData("DataDirectory", objValue) methode. De DataDirectory vervangingstekenreeks moet tussen de sluistekens staan en er mag geen witruimte zijn tussen de naam en de pipetekens. De DataDirectory naam is niet hoofdlettergevoelig.

Als een fysieke map met de naam DataDirectory moet worden doorgegeven als lid van de lijst met metagegevenspaden, voegt u witruimte toe aan een of beide zijden van de naam. Voorbeeld: Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2". Een ASP.NET-toepassing lost | opDataDirectory | naar de map '<application root>/app_data'.
~ Wordt omgezet in de hoofdmap van de webtoepassing. Het ~-teken op een voorlooppositie wordt altijd geïnterpreteerd als de hoofdoperator van de webtoepassing (~), hoewel dit een geldige lokale submap kan vertegenwoordigen. Als u wilt verwijzen naar een dergelijke lokale submap, moet de gebruiker expliciet doorgeven ./~.

DataDirectory en de ~-operator moet alleen aan het begin van een pad worden opgegeven, ze worden niet omgezet op een andere positie. Het Entity Framework probeert het op te lossen ~/data, maar wordt behandeld /data/~ als een fysiek pad.

Een pad dat begint met de DataDirectory operator ~ of the ~ kan niet worden omgezet in een fysiek pad buiten de vertakking van de DataDirectory en de ~-operator. De volgende paden worden bijvoorbeeld omgezet: ~, ~/data, ~/bin/Model/SqlServer. De volgende paden kunnen niet worden omgezet: ~/.., ~/../other.

DataDirectoryen de ~-operator kan als volgt worden uitgebreid om submappen op te nemen: |DataDirectory|\Model~/bin/Model

De resolutie van de DataDirectory vervangingstekenreeks en de ~-operator is niet recursief. Wanneer u bijvoorbeeld DataDirectory het ~ teken opneemt, treedt er een uitzondering op. Dit voorkomt een oneindige recursie.

Zie ook