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 (*) assemblyFullName opgeeft, 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 |
---|---|
|DataDirectory| |
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 | DataDirectory | 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
.
DataDirectory
en 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.