Estou tentando replicar um exemplo encontrado no MSDN. Estou usando ASP.NET e EF 4.1 (CTP?). Usei o NuGet para instalar o pacote EntityFramework.
Estou recebendo este erro: The provider did not return a ProviderManifestToken string
... e o banco de dados nunca é criado.
Aqui está minha string de conexão:
<add name="HospitalContext"
connectionString=
"data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
providerName="System.Data.SqlClient"/>
Aqui está o meu código:
var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);
var labResult = new LabResult { Result = "bad", Patient = pat };
int recordAffected = db.SaveChanges();
Aqui está o meu contexto:
public class HospitalContext : DbContext
{
static HospitalContext()
{
Database.SetInitializer(new HostpitalContextInitializer());
}
public DbSet<Patient> Patients { get; set; }
public DbSet<LabResult> LabResults { get; set; }
}
public class HostpitalContextInitializer :
DropCreateDatabaseIfModelChanges<HospitalContext>
{
protected override void Seed(HospitalContext context)
{
context.Patients.Add(new Patient { Name = "Fred Peters" });
context.Patients.Add(new Patient { Name = "John Smith" });
context.Patients.Add(new Patient { Name = "Karen Fredricks" });
}
}
Este é um sistema SQL 2008 totalmente atualizado, com VS 2010 SP1.
SqlServerCe.Entity.dll
Respostas:
Eu estava recebendo este erro e tentei algumas das sugestões anteriores. Em seguida, verifiquei a Exceção interna e percebi que estava obtendo uma falha simples de login do SQL para o usuário. Apenas outra coisa para verificar.
fonte
Isso pode acontecer às vezes quando você coloca a string de conexão no app.config do projeto errado no Visual Studio.
Por exemplo, eu tive esse problema no projeto EF 4.1 (a versão lançada) + projeto WCF Data Service e percebi que não tinha uma string de conexão especificada no projeto Data Services, onde ela estava sendo usada.
fonte
Eu estava tendo o mesmo erro e, na verdade, foi uma falha de login para o servidor especificado. Removi o atributo "Segurança Integrada" da string de conexão de configuração e funcionou.
fonte
Eu tive o mesmo problema e adiciono o código abaixo logo após a instância do meu contexto (onload por exemplo)
fonte
Tive um problema semelhante com o aplicativo MvcMusicStore. Mudei uma linha no Web.config de "Instance = true" para "Instance = false". Às vezes funciona sem esse ajuste, mas não sei o que causa a diferença. Ler este http://msdn.microsoft.com/en-us/library/ms254504.aspx realmente não ajudou.
fonte
Por alguma razão certa de permissão, EF não pode criar conexão de banco de dados. Eu havia enfrentado o mesmo problema em um dia inteiro. Finalmente tentei a seguinte solução e funcionou: a / Abra o IIS (estou usando o IIS 7) b / Abra as configurações avançadas do appool que o site estava usando (Ex: DefaultAppPool) c / Veja o grupo Modelo de Processo, altere o valor de Identidade para "Localsystem"
Espero que funcione com você.
fonte
Eu estava tendo o mesmo problema ...
a solução que funcionou para mim foi:
execute a ferramenta de configuração de rede do cliente (digite cliconfg em Executar)
e verifique se o TCP / IP está ativado ..
fonte
Eu finalmente consegui decifrá-lo - depois de uma ligeira perseguição de ganso selvagem pensando que era devido às permissões.
Revelação: USE SQL PROFILER
(Nota: Recentemente fiz downgrade de EF6 para EF5)
Usando o SQL Profiler, encontrei rapidamente o último SQL executado antes da falha relatada:
Bem, olhe para isso - algo a ver com migrações. Está olhando na
__MigrationHistory
tabela - que eu nem tinha percebido que ela havia criado (eu já tinha apagado as Migrações no meu CSPROJ) e limpei isso.Então, eu puxo as linhas dessa tabela e vejo que ela está vinculada a uma versão específica do produto (v6).
Na verdade, fiz o downgrade do EF6 (que não pretendia instalar em primeiro lugar) para o EF5 (que é mais compatível com andaimes) e isso quando os problemas começaram.
Meu palpite é que a
Model (<Binary data>)
coluna não é compatível com versões anteriores - daí oThe provider did not return a ProviderManifest instance
erro, pois não foi possível decodificá-la.Eu não tinha nada a perder e simplesmente limpei esta mesa completamente e corri
Update-Database -Verbose
e depois voltei a funcionar.Se você está em um ambiente avançado ou já em produção, apagar esta tabela pode não ser a solução, mas dessa forma me permitiu voltar ao trabalho.
fonte
Add-Migration
eUpdate-Database -Verbose -Force
. aqui está uma referência de comando coding.abel.nu/2012/03/ef-migrations-command-referenceAo usar o Visual Studio 11 Beta com EF4.1 e ASP.NET MVC, quase puxei meu cabelo até descobrir
Para corrigir meu problema, entrei em Application_Start e mudei
para
fonte
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
foi adicionado ao meuMain
método, agora funciona como um encanto! Muito obrigado.Esta citação do CodePlex funcionou comigo (visual studio 2013 / MVC 5)
fonte
Outra coisa a se considerar se você estiver usando EF Code First é que às vezes ele não cria automaticamente o banco de dados de apoio para sua classe DbContext. A solução é adicionar sua própria string de conexão - você pode usar a string de conexão que pode estar presente para lidar com o banco de dados de usuário / registro que apóia o Provedor de Associação Simples, como um modelo. Finalmente, você precisará adicionar um construtor padrão para a classe DbContext que você criou:
Aqui, o nome da string de conexão conforme você inseriu em seu arquivo web.config é usado para direcionar o DbContext para criar o banco de dados. Muito ocasionalmente, tive que criar manualmente o banco de dados (no SQL Server Management Studio) que o fazia funcionar.
fonte
Tenho vários projetos em uma solução e adicionei EF a cada projeto em momentos diferentes. Em algumas máquinas estava funcionando e em outras falhou com o erro mencionado. Levei um tempo para perceber que alguns dos app.config do meu projeto tinham isto:
Isso está ok se você usar LocalDb (novo "sql express" como), mas completamente errado se você não tiver aquele servidor específico instalado e usar um SQL regular.
Solução: Remova o código acima.
fonte
Isso ocorre porque a conexão com o servidor SQL falhou.
Certifique-se de que a conta de usuário sob a qual você está executando o processo tenha acesso ao SQL Server.
Se você gerou o DbContext a partir do encadeamento pai (como usar injeção de dependência) e, em seguida, se estiver representando outro usuário, esse erro ocorreria. A solução seria gerar o DbContext dentro do novo thread ou novo contexto de representação.
fonte
Acabei de fechar todas as instâncias do Visual Studio e reabrir minha solução.
Não sei o que realmente aconteceu, mas tive a mesma solução aberta em dois espaços de trabalho locais diferentes (um com minhas alterações locais, um com o código-fonte do repositório inalterado). Trabalho com um banco de dados postgres, Entity Framework 6, Visual Studio 2013 e ASP.NET MVC 5.
fonte
Eu tive um erro para estrutura de entidade, mas nenhuma das respostas acima acabou se encaixando na solução que finalmente funcionou.
Meus modelos EntityFramework Code First e DataContext estavam em um projeto separado do meu projeto principal WebAPI. Meu projeto do Entity Framework em algum ponto da linha de codificação foi definido como o projeto de inicialização e, portanto, quando eu estava executando uma migração, recebia “O provedor não retornou uma string ProviderManifestToken” ... problema de conexão.
Acontece que, como ConnectionString para o banco de dados está localizado no arquivo Web.config no projeto WebAPI principal, quando eu estava executando uma migração, a string de conexão não estava sendo recuperada. Ao definir o projeto WebAPI como meu startProject, consegui me conectar com êxito.
fonte