Cadenas de conexiónConnection Strings

Una cadena de conexión contiene información de inicialización que se transfiere como un parámetro desde un proveedor de datos a un origen de datos.A connection string contains initialization information that is passed as a parameter from a data provider to a data source. La sintaxis depende del proveedor de datos y la cadena de conexión se analiza mientras se intenta abrir una conexión.The syntax depends on the data provider, and the connection string is parsed during the attempt to open a connection. Las cadenas de conexión que usa Entity Framework contienen la información que se emplea para conectar con el proveedor de datos ADO.NET subyacente que Entity Framework admite.Connection strings used by the Entity Framework contain information used to connect to the underlying ADO.NET data provider that supports the Entity Framework. También contienen información sobre los archivos del modelo y de asignación necesarios.They also contain information about the required model and mapping files.

El proveedor de EntityClient utiliza la cadena de conexión al obtener acceso a los metadatos del modelo y de asignación y al conectar con el origen de datos.The connection string is used by the EntityClient provider when accessing model and mapping metadata and connecting to the data source. Se puede obtener acceso a la cadena de conexión o establecerse a través de la propiedad ConnectionString de EntityConnection.The connection string can be accessed or set through the ConnectionString property of EntityConnection. La clase EntityConnectionStringBuilder se puede utilizar para construir mediante programación los parámetros de la cadena de conexión o tener acceso a ellos.The EntityConnectionStringBuilder class can be used to programmatically construct or access parameters in the connection string. Para obtener más información, consulte Cómo: crear una cadena de conexión EntityConnection.For more information, see How to: Build an EntityConnection Connection String.

El herramientas de Entity Data Model generar una cadena de conexión que se almacena en el archivo de configuración de la aplicación.The Entity Data Model tools generate a connection string that is stored in the application's configuration file. ObjectContext recupera esta información de conexión automáticamente al crear consultas de objetos.ObjectContext retrieves this connection information automatically when creating object queries. Se puede tener acceso al elemento EntityConnection que usa una instancia de ObjectContext desde la propiedad Connection.The EntityConnection used by an ObjectContext instance can be accessed from the Connection property. Para obtener más información, consulte administrar conexiones y transacciones.For more information, see Managing Connections and Transactions.

Parámetros de la cadena de conexiónConnection String Parameters

El formato de una cadena de conexión es una lista de pares de parámetros de clave y valor delimitados por punto y coma:The format of a connection string is a semicolon-delimited list of key/value parameter pairs:

keyword1=value; keyword2=value;

El signo igual (=) asocia cada palabra clave a su valor.The equal sign (=) connects each keyword and its value. Las palabras clave no distinguen entre mayúsculas y minúsculas y los espacios entre los pares clave-valor se omiten.Keywords are not case sensitive, and spaces between key/value pairs are ignored. Sin embargo, los valores pueden distinguir entre mayúsculas y minúsculas, en función del origen de datos.However, values can be case sensitive, depending on the data source. Los valores que contengan un punto y coma, caracteres de comilla sencilla o caracteres de comilla doble deben colocarse entre comillas dobles.Any values that contain a semicolon, single quotation marks, or double quotation marks must be enclosed in double quotation marks. En la tabla siguiente se muestran los nombres válidos para los valores de palabra clave en la propiedad ConnectionString.The following table lists the valid names for keyword values in the ConnectionString.

Palabra claveKeyword DescripciónDescription
Provider Se requiere si no se especifica la palabra clave Name.Required if the Name keyword is not specified. El nombre del proveedor, que se usa para recuperar el objeto DbProviderFactory para el proveedor subyacente.The provider name, which is used to retrieve the DbProviderFactory object for the underlying provider. Este valor es constante.This value is constant.

Cuando la palabra clave Name no se incluye en una cadena de conexión de Entity, se requiere un valor no vacío para la palabra clave Provider.When the Name keyword is not included in an entity connection string, a non-empty value for the Provider keyword is required. Esta palabra clave y la palabra clave Name se excluyen mutuamente.This keyword is mutually exclusive with the Name keyword.
Provider Connection String Opcional.Optional. Especifica la cadena de conexión específica del proveedor que se pasa al origen de datos subyacente.Specifies the provider-specific connection string that is passed to the underlying data source. Esta cadena de conexión se expresa mediante pares palabra clave-valor válidos para el proveedor de datos.This connection string is expressed by using valid keyword/value pairs for the data provider. Un valor de Provider Connection String no válido provocará un error en tiempo de ejecución cuando sea evaluado por el origen de datos.An invalid Provider Connection String will cause a run-time error when it is evaluated by the data source.

Esta palabra clave y la palabra clave Name se excluyen mutuamente.This keyword is mutually exclusive with the Name keyword.

El valor de Provider Connection String debe estar entrecomillado.The value of the Provider Connection String must be surrounded by quotes. A continuación se muestra un ejemplo:The following is an example:

Provider Connection String ="Server=serverName; User ID = userID";

El ejemplo siguiente no va a funcionar:The following example is not going to work:

Provider Connection String =Server=serverName; User ID = userID
Metadata Se requiere si no se especifica la palabra clave Name.Required if the Name keyword is not specified. Una lista delimitada por barras verticales de los directorios, archivos y localizadores de recursos en que se ha de buscar información de asignación y metadatos.A pipe-delimited list of directories, files, and resource locations in which to look for metadata and mapping information. A continuación se muestra un ejemplo:The following is an example:

Metadata=

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

Los espacios en blanco a cada lado del separador de barra vertical se pasan por alto.Blank spaces on each side of the pipe separator are ignored.

Esta palabra clave y la palabra clave Name se excluyen mutuamente.This keyword is mutually exclusive with the Name keyword.
Name La aplicación puede especificar, si se desea, el nombre de conexión en un archivo de configuración de la aplicación que proporcione los valores de cadena de conexión con pares palabra clave-valor necesarios.The application can optionally specify the connection name in an application configuration file that provides the required keyword/value connection string values. En este caso, no es posible suministrarlos directamente en la cadena de conexión.In this case, you cannot supply them directly in the connection string. La palabra clave Name no se permite en un archivo de configuración.The Name keyword is not allowed in a configuration file.

Cuando la palabra clave Name no se incluye en la cadena de conexión, se requiere un valor no vacío para la palabra clave Provider.When the Name keyword is not included in the connection string, a non-empty values for Provider keyword is required.

Esta palabra clave y todas las demás palabras clave de cadena de conexión se excluyen mutuamente.This keyword is mutually exclusive with all the other connection string keywords.

El siguiente es un ejemplo de una cadena de conexión para el modelo AdventureWorks Sales almacenado en el archivo de configuración de aplicación:The following is an example of a connection string for the AdventureWorks Sales Model stored in the application configuration file:

Ubicaciones de los archivos del modelo y de asignaciónModel and Mapping File Locations

El parámetro Metadata contiene una lista de ubicaciones en las que el proveedor EntityClient busca los archivos del modelo y de asignación.The Metadata parameter contains a list of locations for the EntityClient provider to search for model and mapping files. Los archivos del modelo y de asignación se suelen implementar en el mismo directorio que el archivo ejecutable de la aplicación.Model and mapping files are often deployed in the same directory as the application executable file. Estos archivos también se pueden implementar en una ubicación concreta o incluirse como un recurso incrustado en la aplicación.These files can also be deployed in a specific location or included as an embedded resource in the application.

Los recursos incrustados se especifican como sigue:Embedded resources are specified as follows:

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

Las opciones siguientes están disponibles para definir la ubicación de un recurso incrustado:The following options are available for defining the location of an embedded resource:

OpciónOption DescripciónDescription
assemblyFullName Nombre completo de un ensamblado con el recurso incrustado.The full name of an assembly with the embedded resource. El nombre incluye el nombre sencillo, nombre de la versión, referencia cultural admitida y clave pública, como se indica a continuación:The name includes the simple name, version name, supported culture, and public key, as follows:

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

Los recursos se pueden incrustar en cualquier ensamblado al que la aplicación pueda tener acceso.Resources can be embedded in any assembly that is accessible by the application.

Si especifica un carácter comodín (*) para assemblyFullName, el tiempo de ejecución de Entity Framework buscará los recursos en las ubicaciones siguientes, en este orden:If you specify a wildcard (*) for assemblyFullName, the Entity Framework runtime will search for resources in the following locations, in this order:

1. El ensamblado que realiza la llamada.1. The calling assembly.
2. Los ensamblados a los que se hace referencia.2. The referenced assemblies.
3. Los ensamblados en el directorio bin de una aplicación.3. The assemblies in the bin directory of an application.

Si los archivos no están en ninguna de estas ubicaciones, se lanzará una excepción.If the files are not in one of these locations, an exception will be thrown. Nota: al utilizar caracteres comodín (*), Entity Framework tiene que buscar a través de todos los ensamblados los recursos con el nombre correcto.Note: When you use wildcard (*), the Entity Framework has to look through all the assemblies for resources with the correct name. Para mejorar el rendimiento, especifique el nombre de ensamblado en lugar del carácter comodín.To improve performance, specify the assembly name instead of the wildcard.
resourceName Nombre del recurso incluido, como AdvendtureWorksModel.csdl.The name of the included resource, such as AdvendtureWorksModel.csdl. Los servicios de metadatos sólo buscarán los archivos o recursos con una de las extensiones siguientes: .csdl, .ssdl o .msl.The metadata services will only look for files or resources with one of the following extensions: .csdl, .ssdl, or .msl. Si no se especifica resourceName, se cargarán todos los recursos de metadatos.If resourceName is not specified, all metadata resources will be loaded. Los recursos deberían tener nombres únicos dentro de un ensamblado.The resources should have unique names within an assembly. Si varios archivos con el mismo nombre se definen en directorios diferentes en el ensamblado, la información de resourceName debe incluir la estructura de carpetas antes del nombre del recurso, por ejemplo nombreDeCarpeta.nombreDeArchivo.csdl.If multiple files with the same name are defined in different directories in the assembly, the resourceName must include the folder structure before the name of the resource, for example FolderName.FileName.csdl.

resourceName no se requiere al especificar un carácter comodín (*) para assemblyFullName.resourceName is not required when you specify a wildcard (*) for assemblyFullName.

Nota

Para mejorar el rendimiento, incruste los recursos en el ensamblado que realiza la llamada, excepto en escenarios sin web donde no haya ninguna referencia a los archivos de metadatos y asignaciones subyacentes en el ensamblado que realiza la llamada.To improve performance, embed resources in the calling assembly, except in non-Web scenarios where there is no reference to underlying mapping and metadata files in the calling assembly.

En el ejemplo siguiente se cargan todos los archivos del modelo y de asignación en el ensamblado que realiza la llamada, ensamblados a los que se hace referencia y otros ensamblados en el directorio bin de una aplicación.The following example loads all the model and mapping files in the calling assembly, referenced assemblies, and other assemblies in the bin directory of an application.

Metadata=res://*/  

El ejemplo siguiente carga el archivo model.csdl del ensamblado AdventureWorks y carga los archivos model.ssdl y model.msl desde el directorio predeterminado de la aplicación en ejecución.The following example loads the model.csdl file from the AdventureWorks assembly, and loads the model.ssdl and model.msl files from the default directory of the running application.

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

En el ejemplo siguiente se cargan los tres recursos especificados del ensamblado concreto.The following example loads the three specified resources from the specific assembly.

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  

En el ejemplo siguiente se cargan todos los recursos incrustados con las extensiones .csdl, .msl y .ssdl del ensamblado.The following example loads all the embedded resources with the extensions .csdl, .msl, and .ssdl from the assembly.

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

En el ejemplo siguiente se cargan todos los recursos de la ruta de acceso de archivo relativa más "datadir\metadata\" desde la ubicación del ensamblado cargado.The following example loads all the resources in the relative file path plus "datadir\metadata\" from the loaded assembly location.

Metadata=datadir\metadata\  

En el ejemplo siguiente se cargan todos los recursos en la ruta de acceso del archivo relativa desde la ubicación de ensamblado cargada.The following example loads all the resources in the relative file path from the loaded assembly location.

Metadata=.\  

Compatibilidad con la |DataDirectory| cadena de sustitución y la aplicación Web raíz (~) (operador)Support for the |DataDirectory| Substitution String and the Web Application Root Operator (~)

DataDirectory y ~ operador se usa en la ConnectionString como parte de la Metadata y Provider Connection String palabras clave.DataDirectory and the ~ operator are used in the ConnectionString as part of the Metadata and Provider Connection String keywords. El elemento EntityConnection reenvía DataDirectory y el operador ~ a MetadataWorkspace y al proveedor de almacenamiento, respectivamente.The EntityConnection forwards the DataDirectory and the ~ operator to MetadataWorkspace and the store provider, respectively.

TérminoTerm DescripciónDescription
&#124;DataDirectory&#124; Se resuelve como una ruta de acceso relativa a archivos de metadatos y una asignación.Resolves to a relative path to a mapping and metadata files. Se trata del valor que se establece a través del método AppDomain.SetData("DataDirectory", objValue).This is the value that is set through the AppDomain.SetData("DataDirectory", objValue) method. La cadena de sustitución DataDirectory debe incluirse entre caracteres de barra vertical y no puede haber ningún espacio en blanco entre su nombre y los caracteres de barra vertical.The DataDirectory substitution string must be surrounded by the pipe characters and there cannot be any whitespace between its name and the pipe characters. El nombre de DataDirectory no distingue entre mayúsculas y minúsculas.The DataDirectory name is not case-sensitive.

Si hay que pasar un directorio físico denominado "DataDirectory" como miembro de la lista de rutas de acceso de los metadatos, agregue el espacio en blanco en uno de los laterales del nombre o en ambos, por ejemplo: Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2".If a physical directory named "DataDirectory" has to be passed as a member of the list of metadata paths, add whitespace should on either side or both sides of the name, for example: Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2". Una aplicación ASP.NET resuelve |DataDirectory| a la "<raíz de la aplicación > / app_data" carpeta.An ASP.NET application resolves |DataDirectory| to the "<application root>/app_data" folder.
~ Se resuelve como la raíz de la aplicación web.Resolves to the Web application root. El carácter ~ en una posición inicial siempre se interpreta como el operador raíz de la aplicación web (~), aunque podría representar un subdirectorio local válido.The ~ character at a leading position is always interpreted as the Web application root operator (~), although it might represent a valid local subdirectory. Para hacer referencia a este tipo de subdirectorio local, el usuario debería pasar ./~ explícitamente.To refer to such a local subdirectory, the user should explicitly pass ./~.

DataDirectory y el operador ~ solo se deberían especificar al principio de una ruta de acceso; no se resuelven en ninguna otra posición.DataDirectory and the ~ operator should be specified only at the beginning of a path, they are not resolved at any other position. Entity Framework intentará resolver ~/data, pero tratará /data/~ como una ruta de acceso física.The Entity Framework will try to resolve ~/data, but it will treat /data/~ as a physical path.

Una ruta de acceso que comience con DataDirectory o con el operador ~ no se puede resolver como una ruta de acceso física fuera de la rama de DataDirectory y el operador ~.A path that starts with the DataDirectory or the ~ operator cannot resolve to a physical path outside the branch of the DataDirectory and the ~ operator. Por ejemplo, las rutas de acceso siguientes se resolverán: ~, ~/data, ~/bin/Model/SqlServer.For example, the following paths will resolve: ~ , ~/data , ~/bin/Model/SqlServer. Las rutas de acceso siguientes no se resolverán: ~/.., ~/../other.The following paths will fail to resolve: ~/.., ~/../other.

DataDirectory y el operador ~ se puede extender para incluir los subdirectorios, de la forma siguiente: |DataDirectory|\Model, ~/bin/ModelDataDirectory and the ~ operator can be extended to include sub-directories, as follows: |DataDirectory|\Model, ~/bin/Model

La resolución de la cadena de sustitución DataDirectory y el operador ~ no es recursiva.The resolution of the DataDirectory substitution string and the ~ operator is non-recursive. Por ejemplo, cuando DataDirectory incluye el carácter ~, se lanza una excepción.For example, when DataDirectory includes the ~ character, an exception will occur. De esta forma se evita una recursividad infinita.This prevents an infinite recursion.

Vea tambiénSee Also

Trabajo con proveedores de datosWorking with Data Providers
Consideraciones de implementaciónDeployment Considerations
Administrar conexiones y transaccionesManaging Connections and Transactions
Cadenas de conexiónConnection Strings