【问题标题】:Which version of Entity Framework is used by my project?我的项目使用哪个版本的实体框架?
【发布时间】:2013-04-04 16:29:27
【问题描述】:

我有一个使用实体框架的项目,但我不确定我使用的是哪个版本的 EF。 根据Microsoft version history EF5 会自行安装:

如果您使用 Visual Studio 2012 中的实体框架设计器创建新模型,EF5 NuGet 包将安装到您的项目中,并且生成的代码将使用 EF5。

但是我没有创建项目的 EF 部分,而是从版本控制 (TFS) 中获得的。现在我不确定如何确定我是否有 EF5。

如果我右键单击项目的 References 文件夹并选择管理 NuGet 包,它会显示带有卸载按钮的 EF5,这意味着我有 EF5。

但是 References 文件夹中的 system.data.entity 在 Properties explorer 中有一个 Runtime Version v4.0.30319 和 Version 4.0.0.0,这意味着 EF 4(根据 Determine version of Entity Framework I am using?)。

我的app.config 里确实有这个:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

这在我的web.config:

<configSections>
  <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<!--...-->
  <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
<!--...-->
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

谁能澄清一下?

【问题讨论】:

    标签: visual-studio entity-framework version entity-framework-5


    【解决方案1】:

    也许您的项目基于 .NET 4.0,在这种情况下,您的 EF5 版本没有 .NET 4.5 功能:

    EntityFramework 5 use dll version 4.4.0.instead 5.0

    【讨论】:

    • 好点,我没有想到。我检查了我的项目,但它们似乎都是 .NET 4.5。
    【解决方案2】:

    根据this answerEntity Framework 5 not installing correctly?,应该只查看EntityFramework.dll,在我的例子中显示运行时版本 v4.0.30319 但版本 5.0。 0.0。 (所以我确实有 EF 5。)

    【讨论】:

      【解决方案3】:

      转到您项目的 packages.config 文件。

        <package id="EntityFramework" version="6.1.3" targetFramework="net45" />
      

      【讨论】:

        【解决方案4】:

        我在 System.Data.Entity 上有相同的版本号。这来自 .Net 框架,而不是实体框架安装。您可以通过右键单击引用并选择Find Code Dependent on Module来查看应用程序的哪些部分正在使用它。除非代码访问元数据,主要是状态枚举和属性定义,否则通常不会有很多。下一个版本会将所有这些都带入 EntityFramework.dll - 请参阅 EFv6

        顺便说一句,查看 System.Data.Entity 属性中的文件夹,v4.0.30319 位于 .NETFramework\v4.5

        【讨论】:

        • 1.由于我不能使用 EF5 使用的功能,那么查看使用模块的代码对我有什么帮助? 2. 根据this answer,我应该只看EntityFramework.dll,它也显示Runtime version v4.0.30319 但Version 5.0.0.0。
        【解决方案5】:

        获取此类信息的最简单方法是安装Microsoft ASP.NET MVC Diagnostics 5.2.3

        这只是为您的项目生成一个包含所有相关信息的网页。例如,您可以在该页面上搜索“实体”并立即查看版本信息。

        这是一个article,显示了此诊断工具的一种用途。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-13
          • 1970-01-01
          • 2016-10-17
          • 1970-01-01
          • 1970-01-01
          • 2012-06-02
          • 1970-01-01
          相关资源
          最近更新 更多