如何从实体框架 4 升级到 EF6?

Posted

技术标签:

【中文标题】如何从实体框架 4 升级到 EF6?【英文标题】:How to upgrade from entity framework 4 to EF6? 【发布时间】:2016-09-26 15:17:15 【问题描述】:

我想使用 Entity Framework 6 创建一个 EntityDataModel,但每次尝试时都会收到此错误:

您的项目引用了旧版本的实体框架。

我正在使用 Visual Studio 2013,我的项目是 Asp.net 4.5.1 Web 表单项目。这是我的 web.config 文件,为了解决问题,我删除了该文件的某些部分,但都是徒劳的。

<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please   visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<!--
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.

The following attributes can be set on the <httpRuntime> tag.
  <system.Web>
    <httpRuntime targetFramework="4.5.1" />
  </system.Web>
-->
<system.web>
<compilation debug="true" targetFramework="4.5.1">
  <assemblies/>
</compilation>
<httpRuntime targetFramework="4.5"/>
<customErrors mode="Off"/>
</system.web>
<system.codedom>
<compilers>
  <!--<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
  -->
</compilers>
</system.codedom>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
</appSettings>
<connectionStrings>
<add name="tebimir_db_tebimEntities" connectionString="metadata=res://*/DataAccessLayer.tebimir_db_tebim.csdl|res://*/DataAccessLayer.tebimir_db_tebim.ssdl|res://*/DataAccessLayer.tebimir_db_tebim.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tebim.ir,9993;initial catalog=tebimir_db_tebim;persist security info=True;user id=tebimir_dbadmin;password=qwerty*2607548;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/>
 <add name="tebimir_db_tebimEntities_plain" connectionString="data source=185.94.97.58,9993;initial catalog=tebimir_db_tebim;persist security info=True;user id=tebimir_dbadmin;password=qwerty*2607548;"/>
 </connectionStrings>
 <system.webServer>
 <defaultDocument>
  <files>
    <clear/>
    <add value="index.aspx"/>
  </files>
</defaultDocument>
 <validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="mssqllocaldb"/>
   </parameters>
  </defaultConnectionFactory>
  <providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
   </providers>
  </entityFramework>
 </configuration>

【问题讨论】:

让我们看看this link。它可能会解决您的问题。 谢谢,但这与我的问题无关。 我的帐户有问题吗?我所有的问题都不会超过 10 位访客。堆栈溢出真是一个糟糕的网站 【参考方案1】:

右键单击解决方案资源管理器 => 管理 Nuget 包 => 安装 实体框架

【讨论】:

这似乎重新散列this answer。我已将此答案转回使用的报价格式很合适。因为这个答案重复了另一个答案(并且没有赞成/反对票),所以保留它没有什么意义。【参考方案2】:

我建议你卸载所有实体框架包,然后从 nuget 包重新安装。我希望它会帮助你。

有关更多信息,您可以使用此link。

【讨论】:

谢谢,我不使用mysql。给定的链接是关于 mysql 的。【参考方案3】:

尝试使用 NuGet 更新实体框架 在添加模型之前,请按照以下步骤操作

    在 VS 解决方案资源管理器中右键单击您的项目并选择“管理 NuGet 包”

    选择 EntityFramework 广告点击更新。

    现在添加实体数据模型。

【讨论】:

我做了,我卸载了 EF,重新安装了它。但没有任何改变 它的版本是6.1.3 如何安装 entityframework 6 ?我已经使用 nuget 安装了它,还有其他额外的事情要做吗? 我做了这些步骤,但出现了另一个错误“您的项目引用了最新版本的实体框架......”

以上是关于如何从实体框架 4 升级到 EF6?的主要内容,如果未能解决你的问题,请参考以下文章

生成的查询在实体框架的版本之间是不同的

ODAC 12c 和实体框架 6

将 EF 4 EDMX 升级到 EF 6

如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入

如何将 Database First Entity Framework 4 升级到 6

如何在 T4 中实例化 EF6 上下文?