Pergunta

Eu estou usando uma arquitetura em camadas com o Entity Framework como meu DataLayer com um monte de repositórios no topo que contenham as consultas LINQ to Entities. A camada de dados é um projeto, ao lado de que eu tenho uma camada de serviços ea interface, que é um website.

Eu quero meu site para ser responsável de especificar o connectionstring para o meu modelo de entidade. Como posso fazer isso?

Eu estou usando um método singleton para chegar ao meu repositório entidade, que está localizado dentro da dataLayer.

Graças

Foi útil?

Solução

Você pode copiar a seqüência de conexão criado na App.Config da DAL montagem na seção connectionStrings do web.config.

Você pode manter a seqüência de conexão no dll montagem, mas você não deve implantá-lo com o site.

Você vai precisar de copiar toda a cadeia de conexão. Deve olhar como este:

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

Ela deve incluir todas as informações sobre onde existem os arquivos de mapeamento.

Outras dicas

No meu caso, embora eu estou usando L2S em vez de L2E, mas a recomendação deve ficar. Eu tenho um generalize biblioteca de configuração que se alimenta de um arquivo XML. Quando um contexto de dados é necessária, cada objecto de dados tem um método como o que se segue. Concedido, ele poderia ser templated bastante fácil, se você preferir.

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

    return new CalendarsAndListsDataContext(_conStr);
}

Agora, a maior desvantagem é alterações seqüência de conexão requerem uma reinicialização do aplicativo, mas no meu caso, que não é um problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top