10

得到错误:

System.Data.ProviderIncompatibleException:从数据库获取提供者信息时出错。这可能是由 Entity Framework 使用不正确的连接字符串引起的。
检查内部异常以获取详细信息并确保连接字符串正确。
---> 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。同样的问题。

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

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

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

4

7 回答 7

8

设法解决了。

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

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

  <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 时,它​​就像一个魅力。

于 2012-09-05T14:54:02.343 回答
3

我通过在我的实体 dll 项目(具有 app.config 文件)的解决方案中设置启动项目来解决它。我确实将包管理器控制台窗口中的“默认项目”设置为正确的实体 dll 项目,但这不起作用。详情

带有 SQL Server 2012 的实体框架 6 提供 System.Data.Entity.Core.ProviderIncompatibleException system-data-entity-core-providerin

于 2014-08-14T22:02:01.610 回答
0

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

于 2013-03-14T21:28:21.610 回答
0

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

于 2013-04-22T09:27:05.540 回答
0

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

于 2013-07-20T17:59:49.003 回答
0

看到这个帖子:

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

看起来您缺少 MARS 设置。

于 2012-09-05T13:02:08.097 回答
-3

我将它与 VS 2010 一起使用,它有效:

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

于 2014-03-01T00:04:09.097 回答