4

我昨天将我的电脑从 Windows 7“升级”到了 Windows 8,所以现在我正在使用 Visual Studio 2012,并打开我的 Visual Studio 2010 项目。

这个项目一直运行良好,但在 Visual Studio 2012 中不起作用。我遇到了一些奇怪的错误,但我修复了这些错误。现在,我遇到了一个无法修复且在 Google 上找不到任何相关信息的错误:

我得到这个例外:

未能将 Database.DefaultConnectionFactory 设置为应用程序配置中指定的“System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework”类型的实例。有关详细信息,请参阅内部异常。

带有以下内部异常:

找不到类型“System.Data.Entity.Infrastructure.SqlConnectionFactory”的构造函数。

我的 Web.Config 看起来很标准:

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-WebUI-201253192737;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

SqlConnectionFactory 类存在,它有 2 个构造函数(一个无参数,一个接受连接字符串)。我通过在我的 C# 代码中创建一个 SqlConnectionFactory 来测试它。

我已经删除了实体框架并重新安装了它,但这并没有解决问题。

我正在使用 Entity Framework 5.0 RC(如前所述在 VS2010 中运行良好)与 SQL Server 2012 + 工具和 IIS express。

4

3 回答 3

9

我解决了这个问题。我改变了这个:

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

至:

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

现在它可以工作了。不过有点愚蠢,我想提供连接字符串作为参数。

我通过在 VS 2012 中使用实体框架创建新的 MVC 4 项目并比较 Web.Config 文件发现了这一点。我注意到另一个不同之处。

我的实体框架程序集的版本为 4.4.0.0(尽管我从 NuGet 安装了 5.0 RC)。我创建的新项目有一个版本为 5.0.0.0 的程序集。谁能解释一下?

于 2012-06-10T20:16:11.797 回答
1

您可以检查几件事:

  • 它正在尝试连接到 SQL Express。是否安装了 SQL Express?升级 windows 时安装是否发生了问题。
  • 尝试连接到 SQL Express 的程序的安全上下文是什么?会不会是权利问题?

编辑更多的想法:

  • 与为项目选择的 .net 框架版本相关
  • 涉及到EF是如何引用的,都是引用的吗?复制本地=真?
于 2012-06-10T10:24:28.170 回答
-2

I believe a good way to upgrade from EF v4.3 to Ef v5.0 for existing projects is to use the Nuget command

update-package EntityFramework -pre

This updates the configsection in the config file to EF 5

于 2012-06-12T05:29:29.100 回答