Como devo editar uma string de conexão do Entity Framework?

115

Recentemente, tive que editar meu arquivo app.config para alterar a string de conexão para um modelo de dados ( .edmxarquivo) do Entity Framework . Mas eu gostaria de saber: existe uma maneira de editar a string de conexão EF usando o designer?

A string de conexão original é gerada automaticamente pelo assistente Entity Data Model. A string de conexão não pode ser alterada - ela permanece desativada na janela de propriedades do designer .edmx. Eu gosto de evitar editar XML manualmente se puder (em app.config), então eu queria saber se há uma maneira de voltar à tela do assistente original para fazer alterações na string de conexão e deixar a ferramenta editar o arquivo app.config para mim.

DeveloperDan
fonte

Respostas:

190

Se você remover a string de conexão do app.configarquivo, a reexecução do assistente de modelo de dados da entidade o guiará para construir uma nova conexão.

Fabian Nicollier
fonte
17
Excelente. Esta é exatamente a resposta que eu estava procurando. Só por segurança, comentei a string existente (em vez de excluí-la), salvei as alterações do app.config, cliquei com o botão direito no designer e escolha Atualizar modelo do banco de dados. O assistente permite-me incluir as informações confidenciais (uid e pwd) na string de conexão. Obrigado!
DesenvolvedorDan
5
Se você estiver criando um modelo primeiro, clique com o botão direito do mouse no designer e clique em 'Gerar banco de dados a partir do modelo'
Carl Onager
2
Isso funcionou para mim também, exceto que tive que atualizar o arquivo App.config e reiniciar o VS.NET 2012. Não estava detectando que o arquivo App.config foi alterado.
Garry English
2
Tive de chamar explicitamente o save no arquivo app.config para que o designer reconhecesse que a string de conexão havia sido excluída.
Rossco
1
Uma alternativa para reiniciar o VS é 1. comentar a string de conexão em app.config 2. reconstruir o projeto que contém o .edmx 3. clicar com o botão direito do mouse na superfície de design .edmx e Atualizar modelo do banco de dados ... que deve trazer o assistente Connection String.
RIanGillis
18

Não, você não pode editar a string de conexão no designer. A string de conexão não faz parte do arquivo EDMX, ela é apenas um valor referenciado do arquivo de configuração e, provavelmente, por isso é apenas somente leitura na janela de propriedades.

Modificar o arquivo de configuração é uma tarefa comum porque às vezes você deseja fazer alterações sem reconstruir o aplicativo. Essa é a razão pela qual os arquivos de configuração existem.

Ladislav Mrnka
fonte
+1 para lembrar que: se colocarem em um arquivo de configuração, significa que querem que você o altere. Eu estava principalmente preocupado com o fato de que minhas alterações poderiam ser
anuladas
Você deve ir e alterar a string de conexão na configuração do aplicativo do projeto ao qual o edmx pertence. Não é a configuração do aplicativo de nível superior (que é usado quando é executado). o_0
akava
9

Você normalmente define suas cadeias de conexão em Web.config. Depois de gerar o edmx, a string de conexão será armazenada no App.Config. Se você deseja alterar a string de conexão, vá para app.config e remova todas as strings de conexão. Agora vá para o edmx, clique com o botão direito na superfície do designer, selecione Atualizar modelo do banco de dados , escolha a string de conexão na lista suspensa, clique em próximo , Adicionar ou Atualizar (selecione o que você deseja) e finalize.

Na janela de saída, ele mostrará algo assim,

Arquivo de modelo gerado: UpostDataModel.edmx. O carregamento de metadados do banco de dados demorou 00: 00: 00.4258157. A geração do modelo levou 00: 00: 01.5623765. Adicionada a string de conexão ao arquivo App.Config.

DanKodi
fonte
Estou tendo um problema semelhante, mas quando comento a string de conexão, atualizo o modelo, escolho uma nova string de conexão, minha classe context.cs dentro do modelo é esvaziada. Não tenho certeza por que está fazendo isso a menos que esteja apenas falhando em gerar a classe de contexto?
bitshift
1
Não deveria fazer isso. Pode ser que sua ferramenta de modelagem T4 esteja corrompida.
DanKodi
Eu concordo, "não deveria". No entanto, perdi a conta do número de vezes ao fazer mais do que algumas mudanças não triviais no esquema subjacente, que acabei tendo que simplesmente ignorar o modelo e criar um novo. Talvez com EF7 e sua remoção do arquivo edmx possa ajudar nas coisas. De qualquer forma, também fui eu que fiz desta vez, apenas destaquei tudo no modelo, pressionei delete e trouxe esses itens de volta.
bitshift
2

Abra o arquivo .edmx em qualquer editor de texto, altere o Schema = " seu esquema necessário " e também abra o app.config / web.config , altere o ID do usuário e a senha da string de conexão . você terminou.

bijon75
fonte
Sim, foi isso.
ggderas
1

Siga as próximas etapas:

  1. Abra o app.config e comente a string de conexão (salvar o arquivo)
  2. Abra o edmx (vá para propriedades, a string de conexão deve estar em branco), feche o arquivo edmx novamente
  3. Abra o app.config e descomente a string de conexão (salve o arquivo)
  4. Abra o edmx, vá em propriedades, você deverá ver a string de conexão atualizada !!
Cesar Alvarado Diaz
fonte