none
Atualizar string de conexão com Entity Framework

    Question

  • Bom dia a todos!

    Preciso atualizar o DATASOURCE do banco de dados de uma string de conexão. No projeto utilizo o EF...

    Consigo fazer a atualização pegando a string completa atual, desmembrar a mesma e substituir apenas a parte do datasource usando:

    ConfigurationManager.ConnectionStrings["orderDBEntities"].ConnectionString;
    


    Mas pergunto:

    Alguém sabe uma maneira de se alterar apenas o dataSource da string de conexão?

    Abaixo o trecho do app.config com a parte exata que quero modificar realçada:

     <connectionStrings>
      <add name="orderDBEntities" connectionString="metadata=res://*/WSOOrderModel.csdl|res://*/WSOOrderModel.ssdl|res://*/WSOOrderModel.msl;provider=System.Data.SQLite;provider connection string='<span style="text-decoration:underline"><strong>data source=&quot;D:\WSO\orderDB</strong></span>.db&quot;'"
       providerName="System.Data.EntityClient" />
     </connectionStrings>
    



    Wagner Samuel de Oliveira
    WSO Software
    www.wso.com.br
    Saturday, July 16, 2011 2:49 PM

Answers

  • Entendo... 

    vc pode fazer assim:

     

    private const string CONNECTION_MASK = @"metadata=res://*/WSOOrderModel.csdl|res://*/WSOOrderModel.ssdl|res://*/WSOOrderModel.msl;provider=System.Data.SQLite;provider connection string='data source={0}"

     

     

    ConfigurationManager.ConnectionStrings["orderDBEntities"].ConnectionString; = String.Format(CONNECTION_MASK, "path to database")


     

    Sunday, July 17, 2011 9:08 PM

All replies

  • Wagner,

    Existe algum motivo que vc não pode fazer essa alteração diretamente no Web.config ?

    E se for o caso de vc prescisar de varias connectionsString, não poderia criar varias delas no web.config e depois informa a string de conneção correta na inicialização do seu Data Model ?

    Sunday, July 17, 2011 2:16 PM
  • Olá Rui...

    O motivo é que haverá uma tela de configuração no sistema onde poderei indicar o caminho do DB (entre outras coisas), por exemplo, na rede. É uma pequena aplicação que utiliza SQLite, por isso da necessidade.

    Atualmente está sendo feita a alteração como falaste... mas já houve a necessidade de ter um meio mais fácil...

    Abraço


    Wagner Samuel de Oliveira
    WSO Software
    www.wso.com.br
    Sunday, July 17, 2011 4:09 PM
  • Entendo... 

    vc pode fazer assim:

     

    private const string CONNECTION_MASK = @"metadata=res://*/WSOOrderModel.csdl|res://*/WSOOrderModel.ssdl|res://*/WSOOrderModel.msl;provider=System.Data.SQLite;provider connection string='data source={0}"

     

     

    ConfigurationManager.ConnectionStrings["orderDBEntities"].ConnectionString; = String.Format(CONNECTION_MASK, "path to database")


     

    Sunday, July 17, 2011 9:08 PM
  • Como eu não pensei nisso!! rs...

    Obrigado Rui!!


    Wagner Samuel de Oliveira
    WSO Software
    www.wso.com.br
    Monday, July 18, 2011 2:41 PM
  • Como eu não pensei nisso!! rs...

    Obrigado Rui!!


    Wagner Samuel de Oliveira
    WSO Software
    www.wso.com.br

     

    Sem crise... essas coisas acontecem...

    Tudo bem se eu marcar a minha solução como resposta ?

    Monday, July 18, 2011 4:37 PM
  • Olá Rui...

    Fazendo a solução que propôs... recebo o erro de que a propriedade é somente leitura.


    Wagner Samuel de Oliveira
    WSO Software
    www.wso.com.br
    Tuesday, July 19, 2011 2:45 PM
  • Realmente o ConfigurationManager padrão é somente leitura....

    Não comentei nada pq achei q vc so tava dando um exemplo.... vc vai ter que alterar o web.config com um XmlWriter....

     

    Tuesday, July 19, 2011 11:16 PM