2011-04-16 28 views
6

Acabo de comenzar a jugar con ASP.NET MVC.ASP.NET Entity Framework y cadenas de conexión

<add name="ApplicationServices" connectionString="Data Source=localhost;Port=3306;Database=test;User id=root;Password=admin;" providerName="MySql.Data.MySqlClient" /> 
<add name="testEntities" connectionString="metadata=res://*/Models.testDB.csdl|res://*/Models.testDB.ssdl|res://*/Models.testDB.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;port=3306;database=test;User Id=root;password=admin&quot;" providerName="System.Data.EntityClient" /> 

VS crea automáticamente las cadenas de conexión en web.config con los datos de base de datos cuando se agrega un modelo de datos entidad ADO. El problema es que utilizo el esquema de usuario/privilegios ASP.NET que utiliza la cadena de conexión "ApplicationServices" que existe de forma predeterminada. Todas esas tablas, así como mis tablas de aplicaciones, existen en la misma base de datos. Quiero que los detalles de la base de datos (host/usuario/pase) provengan de una sola entrada de cadena de conexión. O incluso si hay varias entradas de cadena de conexión, es posible obtener los detalles de la base de datos solo desde una única fuente.

Vengo del mundo de PHP y no pude encontrar la manera de hacerlo desde los otros hilos similares con los que me había topado.

Gracias

+0

posible duplicado de [Entity Framework - cadena de conexión redundante.] (Http://stackoverflow.com/questions/3777722/entity-framework-redundant-connection-string) – Jacob

Respuesta

1

has necesitado simplemente cambiar el nombre de "testEntities" a "ApplicationServices"? Así que va a terminar con una cuerda una conexión:

<add name="ApplicationServices" connectionString="metadata=res://*/Models.testDB.csdl|res://*/Models.testDB.ssdl|res://*/Models.testDB.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;port=3306;database=test;User Id=root;password=admin&quot;" providerName="System.Data.EntityClient" /> 

Obviamente va a necesita ajustar la configuración de EF para actualizar el nombre de cadena de conexión también.

Por cierto: Entity Framework - redundant connection string

+0

Tener algo como esto no hace que la membresía funcione como debería. He descubierto que no puedes usar uno para el otro. providerName = "MySql.Data.MySqlClient" hace la diferencia? – Prasanth

1

Uso enfoque simple. Defina solo ApplicationServices en la configuración y cree la cadena de conexión EF en la aplicación. ObjectContext ofrece constructores con EntityConnection o una cadena de conexión directamente. Pase la cadena de conexión de ApplicationService a la parte de cadena de conexión del proveedor en la cadena de conexión EF.

EF ofrece la definición de la cadena de conexión en la parte de configuración, pero en 90% de las situaciones, la única parte que cambiará es la cadena de conexión del proveedor. La información sobre los archivos csdl, ssdl y msl generalmente no cambiará. La única razón para cambiar esos recursos puede ser compatible con múltiples proveedores de bases de datos y en tal caso la parte de cadena de conexión del proveedor también cambiará. En mi opinión, muchas aplicaciones pueden tener esas rutas de recursos codificadas directamente en un contexto relacionado.

Cuestiones relacionadas