Pregunta

Estoy utilizando una arquitectura en capas con el marco de la entidad como mi capa de datos con un montón de repositorios en la parte superior que contengan las consultas LINQ a Entidades. La capa de datos es uno de los proyectos, junto al que tengo una capa de servicios y la interfaz, que es un sitio web.

Quiero que mi web sea responsable de especificar el connectionstring para mi modelo de entidad. ¿Cómo puedo hacer esto?

Estoy utilizando un método de Singleton para llegar a mi repositorio de entidad, que se encuentra dentro de la capa de datos.

Gracias

¿Fue útil?

Solución

Puede copiar la cadena de conexión creada en el app.config del conjunto de DAL en la sección connectionStrings del web.config.

Puede mantener la cadena de conexión en la DLL de conjunto pero no debe desplegarlo con el sitio web.

Usted tendrá que copiar toda la cadena de conexión. Se debe tener este aspecto:

<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Se debe incluir toda la información sobre dónde se encuentran los archivos de mapeo.

Otros consejos

En mi caso, a pesar de que estoy usando en lugar de L2S L2E, pero la recomendación debería ponerse de pie. Tengo una biblioteca generalizar Config que se alimenta desde un archivo XML. Cuando se requiere un contexto de datos, cada objeto de datos tiene un método como la siguiente. Por supuesto, se podría templated bastante fácil, si lo prefiere.

private static string _conStr = null;
private static CalendarsAndListsDataContext GetDataContext()
{
    if (_conStr == null)
    {
        _conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString");
    }

    return new CalendarsAndListsDataContext(_conStr);
}

Ahora, el mayor inconveniente es el cambio de cadena de conexión requieren un reinicio de la aplicación, pero en mi caso, eso no es un problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top