Eu tenho um objeto de estrutura de uma entidade e quando o adiciono ao meu projeto, ele connectionstring
é adicionado app.config
na connectionstring
seção, mas quando eu quero criar um novo entitycontext
e usar isso connectionstring
, esse erro aparece
entity-framework
entity-framework-4
user421413
fonte
fonte
Respostas:
Suspeito que o seu problema esteja relacionado ao fato de você ter mais de um projeto em sua solução e o que contém o material da estrutura da entidade, incluindo
edmx
arquivos, NÃO é o projeto de inicialização das soluções. Nesse caso, mesmo que a cadeia de conexão exista noapp.config
projeto EF , o CLR ainda não poderá encontrá-la em tempo de execução. Por exemplo, se você possui um site e um projeto EF em sua solução, precisa copiar a cadeia de conexão dos projetos EFapp.config
para os do seu siteweb.config
. Basicamente, qualquer dado de cadeia de conexão deve existir no arquivo de configuração do projeto do qual os threads .Net foram iniciados pelo CLR (ou seja, seu projeto de inicialização). Se não for esse o seu caso, basta abrir o seuedmx
, clique com o botão direito do mouse na superfície, selecione propriedades e copie a cadeia de conexão e cole-a naapp.config
seção Cadeia de Conexão. Dessa forma, você pode ter certeza de que está tendo o correto na sua configuração.EDIT:
Como você pode ver aqui na Documentação no ObjectContext Constructor , o primeiro parâmetro é o nome da string de conexão, que é o código gerado no momento em que você cria seu EDM. Se, de alguma forma, o nome do seu nome da cadeia de conexão for alterado, tudo o que você precisa fazer é clicar com o botão direito do mouse no seu modelo e selecionar "Atualizar modelo do banco de dados ..." e seguir o assistente para atualizar sua confing e designer para refletir isso mudança.
fonte
Você precisa copiar a cadeia de conexão no app.config para o seu web.config ou copiar o arquivo inteiro no projeto que exibe a saída. É uma das condições para consumir a estrutura.
fonte
Eu me deparei com esse problema quando tentei colocar minha lógica de banco de dados personalizada em uma DLL para ser usada por vários projetos em minha solução.
Embora o arquivo .dll tenha o arquivo app.config correto, ele não funcionou. As estruturas de entidade desejavam as informações de conexão no app.config do .exe. Copiar as informações para lá funcionou muito bem.
A solução de Morteza de colar a cadeia de conexão diretamente no .edmx não funcionou para mim, pois não me permitiu colar o valor lá - embora seja exatamente isso que eu queria poder fazer.
fonte
Oi, eu tive esse problema e estava me deixando louco. Enfim, finalmente eu descobri qual era o problema. Primeira coisa que você tem a fazer é se certificar de que o
connectionstrings
noapp.config
eweb.config
são os mesmos. Então você deve clicar duas vezes no.edmx
arquivo para poder ver as tabelas. Quando você clicar em qualquer lugar perto das tabelas, mas não nas tabelas, vá para Propriedades. Na lista suspensa, selecioneConceptualEntityModel
e pesquise o Nome do contêiner da entidade e lembre-se bem dele.Em seguida, vá para o designer do arquivo edmx e abra os construtores. (o designer é a subpasta do arquivo edmx) os construtores devem ter dois parâmetros no parâmetro BASE
Este é um deles. o primeiro parâmetro deve ter o nome do arquivo do projeto em que o
.edmx
arquivo está. O segundo parâmetro deve ter o nome do nome do contêiner da entidade das propriedades que mencionei anteriormente. não esqueça de organizar todos os construtores com o:base("", "")
Pelo menos esse era o meu problema e meu problema foi resolvido assim. Espero que você consiga resolver o seu assim.
fonte
Eu tinha uma variação disso que ninguém parecia cobrir.
Eu tinha um projeto principal com alguns modelos e um projeto de teste contendo testes de unidade. O Projeto de Teste estava funcionando, mas parou com o erro mencionado no OP. Eu não havia renomeado ou movido o arquivo EDMX.
Muitos conselhos foram mencionados na comparação de arquivos .config, mas meu projeto não possuía nenhum.
No final, copiei o arquivo app.config do projeto principal para o meu projeto de teste e funcionou. Se esta é a etapa correta ou apresentará problemas de manutenção quando modelos adicionais forem adicionados, eu não sei, mas pelo menos meus testes de unidade estão sendo executados corretamente novamente agora.
fonte
Embora a resposta de Morteza Manavi ' resolva esse problema, outra solução é criar a cadeia de conexão dinamicamente e passá-la ao construtor do seu ObjectContext:
Isso elimina a necessidade de copiar as informações da cadeia de conexão no app.config do seu projeto de inicialização que, pelo menos no meu caso, não era desejável.
fonte
Esqueci de adicionar providerName = "System.Data.EntityClient" como atributo na cadeia de conexão. Isso resultou nesse erro, então
ao invés de
fonte
Acabei de descobrir que, se um aplicativo for criado no IIS a partir do VS2010, dois níveis da raiz do site, esse erro ocorrerá. Não sei por que isso acontece, precisaria investigar mais. Por exemplo, se seu aplicativo estiver neste caminho:
/admin/advertiser
o erro aparecerá se você não tiver/admin
um diretório virtual no site do IIS.Tudo o que fiz foi criar um
admin
diretório vazio no meu.../intepub/wwwroot
erro desapareceu.Você descobrirá que não poderá iniciar a depuração até executar a etapa acima.
Tínhamos esse problema em nossa equipe no passado, demorou algum tempo para lembrar, mas foi exatamente assim que o corrigimos antes.
fonte
Estou usando a arquitetura n'tier e tenho o mesmo problema, mas este me ajuda. Espero que isso ajude você. Primeiro você tem mesmo
connection string
de vocêlibraries
onde você pode acessar DB como emapp.config
eweb.config
depois que você simplesmente adicionar um arquivo sobrecarregado construtor na edmx (Model.context.cs) que agora você tem dois, um construtor é padrão e o outro u apenas acrescentado ( sobrecarregado).fonte
Eu tinha uma biblioteca de classes que também não queria trabalhar com a EF. Depois de copiar o app.config (ou apenas a seção connectionstring) da minha biblioteca de classes para o projeto exe, a conexão funcionou bem! Provavelmente, espera-se que o arquivo de configuração esteja na mesma pasta que o projeto exe e, portanto, não foi encontrado. Portanto, sempre tenha muito cuidado ao usar um arquivo de configuração em um projeto de biblioteca de classes!
fonte
Bem ... esse problema também pode ser por uma razão muito simples (burra) ... Copiei um arquivo de outro projeto e esqueci de alterar o ConnectionString no EntityDataSource ... como estava no início do projeto e aconteceu na página de login, pensei que era algo na configuração, mas era apenas o nome da string de conexão errada (e DefaultContainerName).
fonte