Cadeias de conexão no ADO.NET Entity Framework
Uma cadeia de conexão contém informações de inicialização que são passadas como um parâmetro de um provedor de dados para uma fonte de dados. A sintaxe depende do provedor de dados e a cadeia de conexão é analisada durante a tentativa de abrir uma conexão. As cadeias de conexão usadas pelo Entity Framework contêm informações usadas para se conectar ao provedor de dados ADO.NET subjacente que oferece suporte ao Entity Framework. Eles também contêm informações sobre o modelo necessário e arquivos de mapeamento.
A cadeia de conexão é usada pelo provedor EntityClient ao acessar metadados de modelo e mapeamento e conectar-se à fonte de dados. A cadeia de conexão pode ser acessada ou definida através da ConnectionString propriedade de EntityConnection. A EntityConnectionStringBuilder classe pode ser usada para construir programaticamente ou acessar parâmetros na cadeia de conexão.
As ferramentas do Modelo de Dados de Entidade geram uma cadeia de conexão armazenada no arquivo de configuração do aplicativo. ObjectContext Recupera essas informações de conexão automaticamente ao criar consultas de objeto. O EntityConnection usado por uma ObjectContext instância pode ser acessado a Connection partir da propriedade.
Sintaxe da cadeia de conexão
Para saber mais sobre a sintaxe geral das cadeias de conexão, consulte Sintaxe da cadeia de conexão | Cadeias de conexão no ADO.NET.
Parâmetros da cadeia de conexão
A tabela a seguir lista os nomes válidos para valores de palavra-chave no ConnectionString.
Palavra-chave | Description |
---|---|
Provider |
Obrigatório se a Name palavra-chave não for especificada. O nome do provedor, que é usado para recuperar o DbProviderFactory objeto para o provedor subjacente. Este valor é constante.Quando a Name palavra-chave não é incluída em uma cadeia de conexão de entidade, um valor não vazio para a Provider palavra-chave é necessário. Esta palavra-chave é mutuamente exclusiva com a Name palavra-chave. |
Provider Connection String |
Opcional. Especifica a cadeia de conexão específica do provedor que é passada para a fonte de dados subjacente. Essa cadeia de conexão contém pares de palavra-chave/valor válidos para o provedor de dados. Um inválido Provider Connection String causará um erro em tempo de execução quando for avaliado pela fonte de dados.Esta palavra-chave é mutuamente exclusiva com a Name palavra-chave.Certifique-se de escapar do valor de acordo com a sintaxe geral de ADO.NET cadeias de conexão. Considere, por exemplo, a seguinte cadeia de conexão: Server=serverName; User ID = userID . Ele deve ser escapado porque contém um ponto-e-vírgula. Uma vez que não contém aspas duplas, estas podem ser utilizadas para escapar:Provider Connection String ="Server=serverName; User ID = userID"; |
Metadata |
Obrigatório se a Name palavra-chave não for especificada. Uma lista delimitada por pipe de diretórios, arquivos e locais de recursos nos quais procurar metadados e informações de mapeamento. Veja o exemplo seguinte:Metadata= c:\model | c:\model\sql\mapping.msl; Os espaços em branco em cada lado do separador de tubo são ignorados. Esta palavra-chave é mutuamente exclusiva com a Name palavra-chave. |
Name |
O aplicativo pode, opcionalmente, especificar o nome da conexão em um arquivo de configuração do aplicativo que fornece os valores de cadeia de conexão de palavra-chave/valor necessários. Nesse caso, não é possível fornecê-los diretamente na cadeia de conexão. A Name palavra-chave não é permitida em um arquivo de configuração.Quando a Name palavra-chave não está incluída na cadeia de conexão, são necessários valores não vazios para a palavra-chave Provider.Esta palavra-chave é mutuamente exclusiva com todas as outras palavras-chave da cadeia de conexão. |
Modelo e mapeamento de locais de arquivos
O Metadata
parâmetro contém uma lista de locais para o EntityClient
provedor procurar arquivos de modelo e mapeamento. Os arquivos de modelo e mapeamento geralmente são implantados no mesmo diretório que o arquivo executável do aplicativo. Esses arquivos também podem ser implantados em um local específico ou incluídos como um recurso incorporado no aplicativo.
Os recursos incorporados são especificados da seguinte forma:
Metadata=res://<assemblyFullName>/<resourceName>
As seguintes opções estão disponíveis para definir o local de um recurso incorporado:
Opção | Description |
---|---|
assemblyFullName |
O nome completo de um assembly com o recurso incorporado. O nome inclui o nome simples, o nome da versão, a cultura suportada e a chave pública, da seguinte forma:ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Os recursos podem ser incorporados em qualquer assembly acessível pelo aplicativo. Se você especificar um curinga (*) para assemblyFullName o , o tempo de execução do Entity Framework procurará recursos nos seguintes locais, nesta ordem:1. A assembleia de convocação. 2. As assembleias referenciadas. 3. Os assemblies no diretório bin de um aplicativo. Se os arquivos não estiverem em um desses locais, uma exceção será lançada. Nota: Quando você usa curinga (*), o Entity Framework precisa examinar todos os assemblies em busca de recursos com o nome correto. Para melhorar o desempenho, especifique o nome do assembly em vez do curinga. |
resourceName |
O nome do recurso incluído, como AdventureWorksModel.csdl. Os serviços de metadados procurarão apenas arquivos ou recursos com uma das seguintes extensões: .csdl, .ssdl ou .msl. Se resourceName não for especificado, todos os recursos de metadados serão carregados. Os recursos devem ter nomes exclusivos dentro de um assembly. Se vários arquivos com o mesmo nome forem definidos em diretórios diferentes no assembly, o resourceName deve incluir a estrutura de pastas antes do nome do recurso, por exemplo, FolderName.FileName.csdl.resourceName não é necessário quando você especifica um curinga (*) para assemblyFullName . |
Nota
Para melhorar o desempenho, incorpore recursos no assembly de chamada, exceto em cenários não Web em que não há referência a arquivos de mapeamento e metadados subjacentes no assembly de chamada.
O exemplo a seguir carrega todos os arquivos de modelo e mapeamento no assembly de chamada, assemblies referenciados e outros assemblies no diretório bin de um aplicativo.
Metadata=res://*/
O exemplo a seguir carrega o arquivo model.csdl do assembly AdventureWorks e carrega os arquivos model.ssdl e model.msl do diretório padrão do aplicativo em execução.
Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|model.ssdl|model.msl
O exemplo a seguir carrega os três recursos especificados do assembly específico.
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
O exemplo a seguir carrega todos os recursos incorporados com as extensões .csdl, .msl e .ssdl do assembly.
Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/
O exemplo a seguir carrega todos os recursos no caminho do arquivo relativo mais "datadir\metadata\" do local do assembly carregado.
Metadata=datadir\metadata\
O exemplo a seguir carrega todos os recursos no caminho do arquivo relativo do local do assembly carregado.
Metadata=.\
Apoio ao |Diretório de dados| Cadeia de Substituição e o Operador Raiz do Aplicativo Web (~)
DataDirectory
e o operador ~ são usados no ConnectionString como parte das Metadata
palavras-chave e Provider Connection String
. O EntityConnection encaminha o DataDirectory
operador e o operador ~ para MetadataWorkspace e o provedor da loja, respectivamente.
Termo | Description |
---|---|
|DataDirectory| |
Resolve para um caminho relativo para um mapeamento e arquivos de metadados. Este é o valor que é definido através do AppDomain.SetData("DataDirectory", objValue) método. A DataDirectory cadeia de caracteres de substituição deve ser cercada pelos caracteres pipe e não pode haver nenhum espaço em branco entre seu nome e os caracteres pipe. O DataDirectory nome não diferencia maiúsculas de minúsculas.Se um diretório físico chamado "DataDirectory" tiver que ser passado como um membro da lista de caminhos de metadados, adicione espaço em branco para um ou ambos os lados do nome. Por exemplo: Metadata="DataDirectory1 | DataDirectory | DataDirectory2" . Uma aplicação ASP.NET resolve |Diretório de dados| para a pasta "<raiz do aplicativo>/app_data". |
~ | Resolve para a raiz do aplicativo Web. O caractere ~ em uma posição de liderança é sempre interpretado como o operador raiz do aplicativo Web (~), embora possa representar um subdiretório local válido. Para se referir a tal subdiretório local, o usuário deve passar ./~ explicitamente . |
DataDirectory
e o operador ~ deve ser especificado apenas no início de um caminho, eles não são resolvidos em nenhuma outra posição. O Entity Framework tentará resolver ~/data
, mas será tratado /data/~
como um caminho físico.
Um caminho que começa com o DataDirectory
operador ou o operador ~ não pode resolver para um caminho físico fora da ramificação do DataDirectory
operador e do operador ~. Por exemplo, os seguintes caminhos serão resolvidos: ~
, ~/data
, ~/bin/Model/SqlServer
. Os seguintes caminhos não serão resolvidos: ~/..
, ~/../other
.
DataDirectory
e o operador ~ pode ser estendido para incluir subdiretórios, da seguinte forma: |DataDirectory|\Model
, ~/bin/Model
A resolução da cadeia de DataDirectory
substituição e do operador ~ não é recursiva. Por exemplo, quando DataDirectory
inclui o ~
caractere, ocorrerá uma exceção. Isso evita uma recursão infinita.