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

use*_*467 9 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>
Run Code Online (Sandbox Code Playgroud)

我的DB位于:

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
Run Code Online (Sandbox Code Playgroud)

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

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

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

如果我这样做.\ SQLEXPRESS它的工作原理.

use*_*467 8

管理以解决它.

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

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

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

执行了一个Update-Database -TargetMigration:$InitialDatabase没有工作,因为它说还有待定的更改.

所以我表演了

System.Data.Entity.Database.SetInitializer(     
  new System.Data
            .Entity
            .DropCreateDatabaseIfModelChanges<ReaderInsightDbContext>()); 
Run Code Online (Sandbox Code Playgroud)

在global.asax文件中.

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

  • 而不是数据源=。设置数据源=本地主机; 在您的连接字符串中 (2认同)

Del*_*Lee 0

参见这篇文章:

MVC3音乐商店教程连接字符串问题

看来您缺少 MARS 设置。