none
Entity Framework 4 utilizar outra Connection String RRS feed

  • Pergunta

  • Olá Amigos,

    Hoje eu tenho uma solução que possui várias camadas, dentre elas existe uma de DADOS e outra WEB, na de dados utilizo EF4 e nela tem o arquivo app.config que lá tem connections strings, sendo que na parte WEB também que o web.config, na verdade o que estou precisando é que o EF4 que fica na camada de DADOS pegue a connection string que fica na camada WEB no arquivo web.config.

    Como eu poderia fazer isso ?


    Tércio Padilha
    quinta-feira, 18 de novembro de 2010 19:42

Respostas

  • Olá Tércio,

    Assim como o Elvinho falou, o Entity já faz isso por padrão, ou seja, mesmo que você tenha criado o modelo do entity (edmx) em uma Class Library a parte e ele automaticamente, após gerar o modelo, adicione um app.config a sua Class Library com uma string de conexão com o nome que você definiu no Wizard, quando a sua aplicação referenciar esta Class Library ele não irá considerar a string de conexão contida no APP.Config de sua Class Library, e sim irá considerar a string de conexão que esteja na seção ConnectionStrings do arquivo de configuração de sua aplicação (Web.Config no caso). Ou seja, mesmo o entity adicionando uma chave ao app.config de sua class library contendo a informação de string de conexão o entity irá buscar esta mesma string de conexão (através do nome) no arquivo de configuração (Web.Config) da aplicação e não da class library. Se você não adicionar ao seu Web.Config na seção ConnectionStrings uma chave com o mesmo nome da gerada em sua class library o Entity irá disparar uma exceção informando que a string de conexão nao foi encontrada no arquivo de configuração.

    Ou seja, para este caso, o app.config gerado para a Class Library pode ser descartado.

    Atenciosamente


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    segunda-feira, 22 de novembro de 2010 14:33

Todas as Respostas

  • Bom dia!

    Amigo o Entity vai pegar a string de conexão que estiver no arquivo de configuração do projeto em execução, então é simples se o seu projeto for web vc copia a string de conexão da camada de dados e cola dentro do web config da sua app, se for windows copia e cola no app config do seu projeto windows.

     


    Elvis Rodrigues
    Analista Desenvolvedor .Net
    Perfil Profissional
    MCTS .Net Framework 2.0, MCTS SQL Server 2005
    foxelv@hotmail.com
    sexta-feira, 19 de novembro de 2010 12:20
  • Olá Elvinho,

     

    Na verdade eu sei como funciona, hoje ela funciona normal, sendo que eu tenho dois arquivos de configuração, eu quero centralizar apenas em um e que seja no web.config, quero que o da Camada DADOS va na Camada WEB e leia o web.config.


    Tércio Padilha
    sexta-feira, 19 de novembro de 2010 19:33
  • Olá Tércio,

    Assim como o Elvinho falou, o Entity já faz isso por padrão, ou seja, mesmo que você tenha criado o modelo do entity (edmx) em uma Class Library a parte e ele automaticamente, após gerar o modelo, adicione um app.config a sua Class Library com uma string de conexão com o nome que você definiu no Wizard, quando a sua aplicação referenciar esta Class Library ele não irá considerar a string de conexão contida no APP.Config de sua Class Library, e sim irá considerar a string de conexão que esteja na seção ConnectionStrings do arquivo de configuração de sua aplicação (Web.Config no caso). Ou seja, mesmo o entity adicionando uma chave ao app.config de sua class library contendo a informação de string de conexão o entity irá buscar esta mesma string de conexão (através do nome) no arquivo de configuração (Web.Config) da aplicação e não da class library. Se você não adicionar ao seu Web.Config na seção ConnectionStrings uma chave com o mesmo nome da gerada em sua class library o Entity irá disparar uma exceção informando que a string de conexão nao foi encontrada no arquivo de configuração.

    Ou seja, para este caso, o app.config gerado para a Class Library pode ser descartado.

    Atenciosamente


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    segunda-feira, 22 de novembro de 2010 14:33

  • Olá,

    Caso seu problema tenha sido resolvido, favor marcar como resposta os posts que lhe ajudaram a resolver o problema, pois isto facilita aos demais usuários do forúm a encontrarem as informações procuradas.

    Caso ainda o problema ainda não tenha sido resolvido, você pode identificar o que não está dando certo para que possamos respondê-lo?

    Obrigado


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    quinta-feira, 25 de novembro de 2010 16:26
  • Olá à todos,

    Desculpe-me desenterrar esse post, mas minha dúvida é realmente bem parecida. Uso Entity framework 4 e SQL Server Compact 4 que funcionou legal até eu criar um projeto novo (dentro do mesmo Solution) e tentar usar-lo. Acabei percebendo que o .conf usado era o do projeto definido como principal, contudo continuo com problemas. Agora está aparecendo esse erro: "The underlying provider failed on Open."  ao tentar acessar o context. Estou acessando assim:

    Code Snippet
    1. public IList<Usuario> SelectAll()
    2.         {
    3.             return (IList<Usuario>)context.Usuario.ToList();
    4.         }

    Esse é o meu aap.config:

    Code Snippet
    1. <configuration>
    2.   <connectionStrings>
    3.     <add name="dbSVPEmbarcadoEntities"
    4.          connectionString="metadata=res://*/dbSVPEmbarcado.csdl|res://*/dbSVPEmbarcado.ssdl|res://*/dbSVPEmbarcado.msl;provider=System.Data.SqlServerCe.4.0;
    5.          provider connection string=&quot;Data Source=|DataDirectory|\dbSVPEmbarcado.sdf&quot;" providerName="System.Data.EntityClient" />
    6.   </connectionStrings>
    7. </configuration>

     

    Ao que parece, o projeto principa não consegue enteder que o meu ALGUMACOISAMODEL.edmx está em outro projeto.

    Alguém tem alguma ideia de como resolver isso?

     

     

    quinta-feira, 17 de fevereiro de 2011 15:17
  • Consegui utilizar colocando a BD no projeto principal, mas isso é muito porco. Tem como direcionar o endereço da base do app.config do projeto original para o banco do projeto auxiliar?

    Preceiso modificar esta linha:

    Data Source=|DataDirectory|\dbSVPEmbarcado.sdf   - que vai parar na pasto compilavel do projeto principal.

    quinta-feira, 17 de fevereiro de 2011 15:40