2009-05-13 18 views
7

Estoy usando una arquitectura en capas con Entity Framework como mi capa de datos con un montón de repositorios en la parte superior que contienen las consultas de Linq-To-Entities. La capa de datos es un proyecto, junto a eso tengo una capa de Servicios y la interfaz, que es un sitio web.Entity Framework - diseño en capas - ¿Dónde poner connectionstring?

Quiero que mi sitio web sea responsable de especificar la conexión de mi modelo de entidad. ¿Cómo hago esto?

Estoy usando un método singleton para acceder al repositorio de mi entidad, que se encuentra dentro de la capa de datos.

Gracias

Respuesta

9

Puede copiar la cadena de conexión creada en el App.Config del ensamblado DAL en la sección connectionStrings del web.config.

Puede conservar la cadena de conexión en el dll de ensamblaje pero no debe implementarla en el sitio web.

Deberá copiar toda la cadena de conexión. Debería verse así:

<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" /> 

Debe incluir toda la información sobre dónde existen los archivos de asignación.

+0

Recreé mi modelo de entidad y lo intenté de nuevo y ahora funciona, ¡¡¡gracias !!! – Peter

3

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 de configuración generalizada que se alimenta desde un archivo XML. Cuando se requiere un contexto de datos, cada objeto de datos tiene un método como el siguiente. Por supuesto, podría ser modelado con la suficiente facilidad, 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 cambios de cadena de conexión requieren un reinicio de la aplicación, pero en mi caso, eso no es un problema.

+0

Me gusta la idea de cómo se separa la configuración en un proyecto adicional. Pero para esta aplicación quiero que mi sitio web esté a cargo de la conexión. – Peter

+0

Bueno, no hay ninguna razón por la cual su Capa de Cofiguración tiene que ser de solo lectura. Podría hacer que sea de lectura/escritura, entonces podría hacer algo como COnfigurationLibrary.Config.AddSetting ("ConnectionString", "MyString"). Entonces su sitio web aún podría conducir la cadena de conexión. – Serapth

Cuestiones relacionadas