Depois de baixar o EF6 por nuget e tentar executar meu projeto, ele retorna o seguinte erro:
Nenhum provedor do Entity Framework encontrado para o provedor ADO.NET com nome invariável 'System.Data.SqlClient'. Verifique se o provedor está registrado na seção 'entityFramework' do arquivo de configuração do aplicativo. Consulte http://go.microsoft.com/fwlink/?LinkId=260882 para obter mais informações.
entity-framework
Fernando Vellozo
fonte
fonte
providers
eprovider
, então considere removê-lo?public BaseStorage(): base ("RaptorDB") {}
BaseStorage () herda do DbContext no EF5, tudo funcionou perfeitamente, ainda não no EF6.Respostas:
Acabei de entrar no mesmo problema e parece que o EntityFramework, embora instalado no NuGet Package Manager, não tenha sido instalado corretamente no projeto.
Consegui corrigi-lo executando o seguinte comando no Package Manager Console :
fonte
-Pre
opção tell nuget para instalar pacotes de pré-lançamento. Eu não recomendo usá-lo. Eu tenho um erro semelhante, mas a solução foi apenas instalar o EntityFramework no projeto host. Eu instalei-o em uma biblioteca de classes, mas não no projeto principal (web / console / ou qualquer outro),EntityFramework.SqlServer.dll
à pasta Debug - problema resolvido.Você adicionou o EF a um projeto de biblioteca de classes. Você também precisa adicioná-lo ao projeto que o referencia (seu aplicativo de console, site ou o que for).
fonte
EntityFramework.SqlServer.dll
está sendo copiado para o diretório bin. Adicionar uma referência forte pode quebrar sua arquitetura (se você construiu várias camadas, seu assembly de execução de nível superior nem deveria saber sobre o EF). Em vez disso, você pode garantir que o provedor do SQL Server seja copiado. Veja por exemplo stackoverflow.com/a/19130718/870604Você não precisa instalar o Entity Framework no aplicativo Console, basta adicionar uma referência ao assembly EntityFramework.SqlServer.dll. Você pode copiar esse assembly do projeto Biblioteca de Classes que usa o Entity Framework para uma pasta LIB e adicionar uma referência a ele.
Em suma:
Espero que ajude.
fonte
Você também pode ver esta mensagem se esquecer de incluir "EntityFramework.SqlServer.dll".
Parece ser um arquivo recém-adicionado no EF6. Inicialmente, não o incluí no meu módulo de mesclagem e me deparei com o problema listado aqui.
fonte
Em vez de adicionar EntityFramework.SqlServer ao host do projeto, você pode garantir uma referência estática a partir do seu projeto de modelo / entidade como este
Isso fará com que o processo de construção inclua a montagem com o projeto host.
Mais informações no meu blog http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/
fonte
Quando você instala o Entity Framework 6 até
Nuget
. Em algum momento, o EntityFramework.SqlServer perde outro executável. Basta adicionar oNuget
pacote a esse projeto.Às vezes, acima não funciona no Projeto de Teste
Para resolver esse problema no projeto de teste, basta colocar esse método dentro do projeto de teste:
Esse método nunca foi chamado, mas, como minhas observações, o compilador removerá todos os assemblies "desnecessários" e, sem usar o
EntityFramework.SqlServer
material, o teste falhará.fonte
EntityFramework.SqlServer
é adicionado à sua biblioteca de classes, mas, se não for utilizado, não será colocado dentro da pasta de saída do seu aplicativo. Corrigi o problema adicionando umExecutionStrategy
, o que eu ainda precisava fazer; portanto, adicionar uma linha comoSetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());
dentro de umaDbConfiguration
classe corrigiu o problema.Adicione esta função
para a classe de contexto do banco de dados na classe da biblioteca e a DLL EntityFramework.SqlServer.dll ausente será copiada para os locais corretos.
.
fonte
FixEfProviderServicesProblem
eu tentei no construtor, sem sorte.Nada disso funcionou para mim. Encontrei a solução em outra questão de stackoverflow . Vou adicioná-lo aqui para fácil referência:
fonte
Eu recebi o mesmo erro ao usar o Entity Framework 6 com o SQL Server Compact 4.0. O artigo no MSDN para provedores de estrutura de entidades para EF6 foi útil. A execução dos respectivos comandos do provedor como pacotes nuget no Package Manager Console pode resolver o problema, pois os pacotes NuGet também adicionarão registros automaticamente ao arquivo de configuração. Eu corri
PM> Install-Package EntityFramework.SqlServerCompact
para resolver o problema.fonte
Hoje, encontrei esse problema ao trabalhar com um conjunto de serviços da Web, cada um em projetos diferentes, e um projeto separado contendo testes de integração para alguns desses serviços.
Estou usando essa configuração há algum tempo com o EF5, sem precisar incluir referências ao EF no Projeto de Teste de Integração.
Agora, após a atualização para o EF6, parece que também preciso incluir uma referência ao EF6 no projeto de teste de integração, mesmo que não seja usado lá (praticamente como indicado acima pelo usuário3004275 ).
Indicações que você está enfrentando o mesmo problema:
O terceiro ponto é o que me excitou por um tempo, e ainda não sei por que isso é necessário. Adicionar um ref ao EF6 no meu projeto de Teste de Integração resolveu em qualquer caso ...
fonte
Quando o erro ocorre nos projetos de testes, a solução mais bonita é decorar a classe de teste com:
fonte
O projeto de inicialização que faz referência ao projeto em que o Entity Framework está sendo usado precisa dos dois seguintes assemblies na pasta bin:
Adicionar a
<section>
ao<configSections>
arquivo .config no projeto de inicialização torna o primeiro assembly disponível nesse diretório bin. Você pode copiar isso do arquivo .config do seu projeto do Entity Framework:Para disponibilizar o segundo arquivo .dll na pasta bin, embora não seja prático, uma cópia manual da pasta bin do projeto do Entity Framework pode ser feita. Uma alternativa melhor é adicionar ao projeto Eventos pós-compilação do Entity Framework as seguintes linhas, que automatizarão o processo:
fonte
Acabei de encontrar este problema hoje. Eu tenho uma biblioteca de classes de repositório de dados com o pacote EF63 NuGet e o aplicativo de console para teste, que têm referência apenas ao projeto da biblioteca de classes. Criei um comando pós-compilação muito simples, que copia EntityFramework.SqlServer.dll da pasta Bin \ Debug da biblioteca de classes para a pasta Bin \ Debug do aplicativo do console e o problema foi resolvido. Não se esqueça de adicionar a seção entityFramework ao arquivo .config do aplicativo de console.
fonte
Adicione abaixo ao seu app.config.
fonte
<configSections>
- #<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
A exclusão da pasta BIN fez isso por mim
fonte
Você deve forçar uma referência estática ao assembly EntityFramework.SqlServer.dll , mas em vez de colocar um código fictício, você pode fazer isso de uma maneira mais bonita:
Se você já possui uma classe DbConfiguration :
Se você não possui uma classe DbConfiguration, deve colocar o seguinte código na inicialização do aplicativo (antes que o EF seja usado):
fonte
Acabei de reinstalar o Entity Framework usando o Nuget. E siga as instruções escritas no link abaixo: http://robsneuron.blogspot.in/2013/11/entity-framework-upgrade-to-6.html
Eu acho que o problema será resolvido.
fonte
Expanda o arquivo YourModel.edmx e abra a classe YourModel.Context.cs em YourModel.Context.tt.
Eu adicionei a seguinte linha na seção using e o erro foi corrigido para mim.
using SqlProviderServices = System.Data.Entity.SqlServer.SqlProviderServices;
Talvez seja necessário adicionar essa linha ao arquivo sempre que o arquivo for gerado automaticamente.
fonte
Também tive um problema semelhante. Meu problema foi resolvido da seguinte maneira:
fonte
parece que ninguém mencionou primeiro, verificando se System.Data.SqlClient está instalado no sistema e se é feita uma referência a ele.
Resolvi meu problema instalando System.Data.SqlClient e adicionando um novo provedor no app.Config
fonte
Além disso, verifique se o projeto de inicialização é o projeto que contém seu dbcontext (ou app.config relevante). O meu estava tentando iniciar um projeto de site que não tinha todas as configurações necessárias.
fonte
Eu tentei quase tudo o que precede e nada funcionou.
Só quando eu definir as DLLs referenciadas no padrão de projeto
EntityFramework
eEntityFramework.SqlServer
propriedadesCopy Local
paraTrue
que ele começar a trabalhar!fonte
pessoal, preciso da atenção de que duas dll EntityFramework.dll e EntityFramework.SqlServer.dll são a biblioteca de camadas DataAccess E não é lógico usá-las na exibição ou em qualquer outra layer.it resolve o seu problema, mas não é lógico.
A maneira lógica é que o atributo ilimitado os remova e substitua pela API Fluent. essa é a solução real
fonte
Eu tinha um aplicativo de console e uma biblioteca de classes. Na biblioteca de classes, criei o Entity Data Model (clique com o botão direito do mouse em Class Library> Adicionar> Novo Item> Dados> ADO.NET Entity Data Model 6.0) e coloquei a referência no aplicativo do console. Portanto, você tem um aplicativo de console que tem referência à biblioteca de classes e, dentro da biblioteca de classes, possui o modelo EF. Eu tive o mesmo erro quando tentei obter alguns registros da tabela.
Resolvi esse problema seguindo estas etapas:
Era tudo o que tinha que fazer e tudo funcionava perfeitamente.
Espero que tenha ajudado.
fonte
Eu tenho o mesmo erro. É estranho que isso aconteça sempre que eu usei meu dbContext para consultar qualquer modelo do meu modelo ou obter uma lista como:
Tentamos reinstalar o Entity Framework, referenciá-lo adequadamente, mas sem sucesso.
Felizmente, tentamos verificar o Nuget em busca de
ALL
soluções, atualizamos tudo ou certificamoseverything
a mesma versão, porque percebemos que os dois projetos têm versões EF diferentes no projeto da Web. E isso funciona. O erro se foi.Aqui está a captura de tela sobre como gerenciar o Nuget para todas as soluções:
fonte
Você está apenas faltando uma referência para EntityFramework.SqlServer.dll. Para projetos EntityFramework usando o SQL Server, os dois arquivos que você precisa consultar são EntityFramework.SqlServer.dll e EntityFramework.dll
fonte
Eu tive um problema relacionado ao migrar de um banco de dados CE para o Sql Server no Azure. Apenas desperdiçou 4 horas tentando resolver isso. Espero que isso possa salvar alguém de um destino semelhante. Para mim, eu tinha uma referência ao SqlCE no meu arquivo packages.config. A remoção resolveu todo o problema e me permitiu usar migrações. Yay Microsoft para outra tecnologia com desnecessariamente complexos problemas de instalação e configuração.
fonte
Eu tive o mesmo problema, copiei o arquivo App Config do projeto que continha o DBContext para o meu projeto de teste
fonte
Eu tive a mesma exceção lançada. eu incluí
e tudo voltou a funcionar ..
fonte
Como a mensagem mostra que precisamos adicionar o provedor System.Data.SqlClient, é por isso que precisamos instalar o pacote de nuget do EntityFramework que possui duas dll, mas se estiver desenvolvendo apenas um aplicativo de console, basta adicionar a referência do EntityFramework.SqlServer.dll
fonte