从数据库获取提供程序信息时发生错误

时间:2012-09-04 21:53:08

标签: entity-framework connection-string ef-migrations

获取错误:

  

System.Data.ProviderIncompatibleException:从数据库获取提供程序信息时发生错误。这可能是由实体框架使用不正确的连接字符串引起的   检查内部异常以获取详细信息,并确保连接字符串正确   ---> System.Data.ProviderIncompatibleException:提供程序未返回ProviderManifestToken字符串   ---> System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:SQL网络接口,错误:25 - 连接字符串无效)

尝试执行Add-Migration

时出现同样的错误

这是我的连接字符串,我需要访问我的本地SQL服务器而不是SQLEXPRESS。

  <connectionStrings>
    <add name="ReaderInsightDbContext" 
         connectionString="data source=localhost\MSSQLSERVER;
                         initial catalog=ReaderInsight;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
  </connectionStrings>

我的数据库位于:

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

所以我的实例是MSSQLSERVER。不确定发生了什么。它首先工作得很好,但在我改变我的代码以使用UOW模式后,这种情况正在发生。我还从EF 4.3升级到EF5。同样的问题。

我尝试了连接字符串中的数据源的许多变体,没有工作,这里有一些例子:

  • localhost \ MSSQLSERVER
  • 。\ MSSQLSERVER
  • //本地主机\ MSSQLSERVER
  • (本地)\ MSSQLSERVER
  • 127.0.0.1 \ MSSQLSERVER

如果我这样做。\ SQLEXPRESS它可以工作。

7 个答案:

答案 0 :(得分:7)

管理以解决问题。

手动删除迁移文件的底线会导致问题。

确保我的连接字符串如下:

  <connectionStrings>
    <add name="ReaderInsightDbContext" 
     connectionString=
     "Data Source=(local);Initial Catalog=ReaderInsight;Integrated Security=True"
     providerName="System.Data.SqlClient" />
  </connectionStrings>

执行Update-Database -TargetMigration:$InitialDatabase无法正常工作,因为它仍然有待更改。

所以我执行了

System.Data.Entity.Database.SetInitializer(     
  new System.Data
            .Entity
            .DropCreateDatabaseIfModelChanges<ReaderInsightDbContext>()); 
global.asax文件中的

评论出来,所以它不会再次运行。然后我做了一个Add-Migration Init,它重新创建了整个数据库的脚本,当我运行Update-Database时就像魅力一样。

答案 1 :(得分:3)

我通过在我的解决方案中将启动项目设置为实体dll项目(具有app.config文件)来解决它。我确实在Package Manager Console窗口中将“Default project”设置为正确的实体dll项目,但这不起作用。详情

Entity Framework 6 with SQL Server 2012 gives System.Data.Entity.Core.ProviderIncompatibleException 系统数据实体芯providerin

答案 2 :(得分:0)

见这篇文章:

MVC3 Music Store Tutorial Connection String issue

看起来你错过了MARS设置。

答案 3 :(得分:0)

当我更改密码时,我遇到了这个问题,SQL Server无法启动。检查:)

答案 4 :(得分:0)

检查,您在连接字符串中使用的SQL Server是否已启动。

答案 5 :(得分:0)

前几天我遇到了同样的问题。原因是我的MSSQL服务器版本。 我试图使用VS2010和SQL SERVER 2008然后它不起作用。 它适用于VS2010附带的SQL Express(它没有启动),但不适用于SQL SERVER。

答案 6 :(得分:-3)

我在VS 2010中使用它并且它起作用了:

  1. 添加了用户实例= true
  2. 使用数据源。\ SQLEXPRESS