📅  最后修改于: 2020-11-21 07:28:01             🧑  作者: Mango
在Entity Framework 5和早期版本的Entity Framework中,代码在作为.NET Framework一部分提供的核心库(主要是System.Data.Entity.dll)之间进行了拆分,并分发了其他库(主要是EntityFramework.dll),并且如下图所示,使用NuGet附带。
在Entity Framework 6中,以前作为.NET框架一部分的核心API也作为NuGet软件包的一部分进行了分发。
为了使Entity Framework成为开源,这是必要的。但是,因此,每当需要将应用程序从Entity Framework的较早版本迁移或升级到EF 6时,都需要重新构建应用程序。
如果您的应用程序使用EF 4.1和更高版本中随附的DbContext,则迁移过程非常简单。但是,如果您的应用程序是ObjectContext,则只需要很少的工作。
让我们看一下将现有应用程序升级到EF6所需执行的以下步骤。
步骤1-第一步是针对.NET Framework 4.5.2,然后右键单击您的项目并选择属性。
步骤2-再次右键单击您的项目,然后选择管理NuGet软件包…
步骤3-在Online选项卡下,选择EntityFramework,然后单击Install。确保删除对System.Data.Entity.dll的程序集引用。
当您安装EF6 NuGet软件包时,它将自动为您从项目中删除对System.Data.Entity的所有引用。
步骤4-如果您有使用EF Designer创建的任何模型,则还需要更新代码生成模板以生成EF6兼容代码。
步骤5-在解决方案资源管理器中的edmx文件下,删除现有的代码生成模板,这些模板通常将分别命名为
步骤6-在EF Designer中打开模型,右键单击设计图面,然后选择添加代码生成项…。
步骤7-添加适当的EF 6.x代码生成模板。
它还将自动生成EF6兼容代码。
如果您的应用程序使用EF 4.1或更高版本,则无需更改代码中的任何内容,因为DbContext和Code First类型的名称空间没有更改。
但是,如果您的应用程序使用的是较旧版本的Entity Framework,则以前在System.Data.Entity.dll中的ObjectContext之类的类型将被移至新的命名空间。
步骤8-您将需要更新您的using或Import指令以针对EF6构建。
更改名称空间的一般规则是将System.Data。*中的任何类型都移至System.Data.Entity.Core。*。以下是其中一些-
某些类型位于Core名称空间中,因为它们并未直接用于大多数基于DbContext的应用程序。
您现有的Entity Framework项目将在Entity Framework 6.0中运行,而无需进行任何重大更改。