Anslutningssträngar i ADO.NET Entity Framework
En niska veze innehåller initieringsinformation som skickas som en parameter från en dataprovider till en datakälla. Syntaxen beror på dataprovidern och niska veze parsas under försöket att öppna en anslutning. Anslutningssträngar som används av Entity Framework innehåller information som används för att ansluta till den underliggande ADO.NET dataprovidern som stöder Entity Framework. De innehåller också information om den modell som krävs och mappningsfiler.
Niska veze används av EntityClient-providern vid åtkomst till modell och mappning av metadata och anslutning till datakällan. Niska veze kan nås eller ställas in via ConnectionString egenskapen EntityConnection. Klassen EntityConnectionStringBuilder kan användas för att programmatiskt konstruera eller komma åt parametrar i niska veze.
Verktygen för entitetsdatamodell genererar en niska veze som lagras i programmets konfigurationsfil. ObjectContext hämtar den här anslutningsinformationen automatiskt när du skapar objektfrågor. Den EntityConnection som används av en ObjectContext instans kan nås från egenskapen Connection .
Syntax för anslutningssträng
Mer information om den allmänna syntaxen för niska veze finns i Syntax för anslutningssträng | Anslutningssträngar i ADO.NET.
Parametrar för anslutningssträng
I följande tabell visas giltiga namn för nyckelordsvärden ConnectionStringi .
Nyckelord | beskrivning |
---|---|
Provider |
Krävs om nyckelordet Name inte har angetts. Providernamnet, som används för att hämta DbProviderFactory objektet för den underliggande providern. Det här värdet är konstant.När nyckelordet Name inte ingår i en entitet niska veze krävs ett icke-tomt värde för nyckelordetProvider . Det här nyckelordet är ömsesidigt uteslutande med nyckelordet Name . |
Provider Connection String |
Valfritt. Anger den providerspecifika niska veze som skickas till den underliggande datakällan. Den här niska veze innehåller giltiga nyckelord/värde-par för dataprovidern. Ett ogiltigt Provider Connection String fel orsakar ett körningsfel när det utvärderas av datakällan.Det här nyckelordet är ömsesidigt uteslutande med nyckelordet Name .Undvik värdet enligt den allmänna syntaxen för ADO.NET niska veze. Överväg till exempel följande niska veze: Server=serverName; User ID = userID . Den måste vara undantagen eftersom den innehåller ett semikolon. Eftersom den inte innehåller dubbla citattecken kan de användas för att komma undan:Provider Connection String ="Server=serverName; User ID = userID"; |
Metadata |
Krävs om nyckelordet Name inte har angetts. En pipe-avgränsad lista över kataloger, filer och resursplatser där du kan söka efter metadata och mappningsinformation. Följande utgör ett exempel:Metadata= c:\model | c:\model\sql\mapping.msl; Tomma blanksteg på varje sida av röravgränsaren ignoreras. Det här nyckelordet är ömsesidigt uteslutande med nyckelordet Name . |
Name |
Programmet kan också ange anslutningsnamnet i en programkonfigurationsfil som innehåller det nyckelord/värde som krävs niska veze värden. I det här fallet kan du inte ange dem direkt i niska veze. Nyckelordet Name tillåts inte i en konfigurationsfil.När nyckelordet Name inte ingår i niska veze krävs ett icke-tomt värde för nyckelordet Provider.Det här nyckelordet är ömsesidigt uteslutande med alla andra niska veze nyckelord. |
Modellera och mappa filplatser
Parametern Metadata
innehåller en lista över platser där providern EntityClient
kan söka efter modell- och mappningsfiler. Modell- och mappningsfiler distribueras ofta i samma katalog som programmets körbara fil. Dessa filer kan också distribueras på en specifik plats eller inkluderas som en inbäddad resurs i programmet.
Inbäddade resurser anges på följande sätt:
Metadata=res://<assemblyFullName>/<resourceName>
Följande alternativ är tillgängliga för att definiera platsen för en inbäddad resurs:
Alternativ | Description |
---|---|
assemblyFullName |
Det fullständiga namnet på en sammansättning med den inbäddade resursen. Namnet innehåller det enkla namnet, versionsnamnet, kulturen som stöds och den offentliga nyckeln enligt följande:ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Resurser kan bäddas in i alla sammansättningar som är tillgängliga för programmet. Om du anger ett jokertecken (*) för assemblyFullName söker Entity Framework-körningen efter resurser på följande platser i den här ordningen:1. Den anropande sammansättningen. 2. De refererade sammansättningarna. 3. Sammansättningarna i bin-katalogen för ett program. Om filerna inte finns på någon av dessa platser utlöses ett undantag. Obs! När du använder jokertecken (*) måste Entity Framework titta igenom alla sammansättningar för resurser med rätt namn. För att förbättra prestandan anger du sammansättningsnamnet i stället för jokertecknet. |
resourceName |
Namnet på den inkluderade resursen, till exempel AdventureWorksModel.csdl. Metadatatjänsterna söker bara efter filer eller resurser med något av följande tillägg: .csdl, .ssdl eller .msl. Om resourceName inte anges läses alla metadataresurser in. Resurserna ska ha unika namn i en sammansättning. Om flera filer med samma namn definieras i olika kataloger i sammansättningen måste resourceName mappstrukturen inkluderas före namnet på resursen, till exempel FolderName.FileName.csdl.resourceName krävs inte när du anger ett jokertecken (*) för assemblyFullName . |
Kommentar
För att förbättra prestandan bäddar du in resurser i den anropande sammansättningen, förutom i icke-webbscenarier där det inte finns någon referens till underliggande mappnings- och metadatafiler i den anropande sammansättningen.
I följande exempel läses alla modell- och mappningsfiler i den anropande sammansättningen, refererade sammansättningar och andra sammansättningar i bin-katalogen för ett program.
Metadata=res://*/
I följande exempel läses filen model.csdl in från AdventureWorks-sammansättningen och läser in filerna model.ssdl och model.msl från standardkatalogen för det program som körs.
Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|model.ssdl|model.msl
I följande exempel läses de tre angivna resurserna in från den specifika sammansättningen.
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
I följande exempel läses alla inbäddade resurser in med tilläggen .csdl, .msl och .ssdl från sammansättningen.
Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/
I följande exempel läses alla resurser in i den relativa filsökvägen plus "datadir\metadata\" från den inlästa sammansättningsplatsen.
Metadata=datadir\metadata\
I följande exempel läses alla resurser in i den relativa filsökvägen från den inlästa sammansättningsplatsen.
Metadata=.\
Stöd för |DataDirectory| Ersättningssträng och rotoperator för webbprogram (~)
DataDirectory
och ~-operatorn används i ConnectionString som en del av nyckelorden Metadata
och Provider Connection String
. Vidarebefordrar EntityConnection operatorn DataDirectory
och ~ till MetadataWorkspace och lagringsprovidern.
Period | beskrivning |
---|---|
|DataDirectory| |
Löser en relativ sökväg till en mappning och metadatafiler. Det här är det värde som anges via AppDomain.SetData("DataDirectory", objValue) metoden. Ersättningssträngen DataDirectory måste vara omgiven av pipe-tecknen och det får inte finnas något tomt utrymme mellan dess namn och pipe-tecknen. Namnet DataDirectory är inte skiftlägeskänsligt.Om en fysisk katalog med namnet "DataDirectory" måste skickas som medlem i listan över metadatasökvägar lägger du till tomt utrymme på båda sidor av namnet. Exempel: Metadata="DataDirectory1 | DataDirectory | DataDirectory2" . Ett ASP.NET program matchar |DataDirectory| till mappen "<application root>/app_data". |
~ | Matchar roten för webbprogrammet. ~-tecknet på en ledande position tolkas alltid som rotoperator för webbprogram (~), även om det kan representera en giltig lokal underkatalog. Om du vill referera till en sådan lokal underkatalog bör användaren uttryckligen skicka ./~ . |
DataDirectory
och ~-operatorn ska endast anges i början av en sökväg, de matchas inte vid någon annan position. Entity Framework försöker lösa ~/data
, men det behandlas /data/~
som en fysisk sökväg.
En sökväg som börjar med operatorn DataDirectory
eller ~ kan inte matchas mot en fysisk sökväg utanför grenen av operatorn DataDirectory
och ~ . Följande sökvägar löser till exempel: ~
, ~/data
, ~/bin/Model/SqlServer
. Följande sökvägar kan inte matcha: ~/..
, ~/../other
.
DataDirectory
och ~-operatorn kan utökas till att omfatta underkataloger enligt följande: |DataDirectory|\Model
, ~/bin/Model
Ersättningssträngens DataDirectory
och ~-operatorns upplösning är icke-rekursiv. Till exempel, när DataDirectory
inkluderar ~
tecknet, uppstår ett undantag. Detta förhindrar en oändlig rekursion.