- 实体框架教程
- 实体框架 - 主页
- 实体框架 - 概述
- 实体框架 - 架构
- 实体 F - 环境设置
- 实体框架 - 数据库设置
- 实体框架 - 数据模型
- 实体框架-DbContext
- 实体框架 - 类型
- 实体框架 - 关系
- 实体框架 - 生命周期
- 实体 F - 代码优先方法
- 实体 F - 模型优先方法
- 实体 F - 数据库优先方法
- 实体框架 - DEV 方法
- 实体F——数据库操作
- 实体框架 - 并发
- 实体框架 - 事务
- 实体框架 - 视图
- 实体框架 - 索引
- 实体 F - 存储过程
- 实体 F - 断开连接的实体
- 实体 F - 表值函数
- 实体框架 - 本机 SQL
- 实体框架 - 枚举支持
- 实体F - 异步查询
- 实体框架 - 持久性
- 实体 F - 投影查询
- 实体 F - 命令记录
- 实体F——命令拦截
- 实体框架 - 空间数据类型
- 实体框架 - 继承
- 实体框架 - 迁移
- 实体框架 - 预加载
- 实体框架 - 延迟加载
- 实体框架 - 显式加载
- 实体框架 - 验证
- 实体框架 - 跟踪更改
- 实体框架 - 彩色实体
- 实体 F - 代码优先方法
- 实体框架 - 第一个示例
- 实体框架 - 数据注释
- 实体框架 - 流畅的 API
- 实体框架-种子数据库
- 实体 F - 代码优先迁移
- 实体 F - 多个 DbContext
- 实体 F - 嵌套实体类型
- 实体框架资源
- 实体框架 - 快速指南
- 实体框架 - 有用的资源
- 实体框架 - 讨论
实体框架 - 迁移
在 Entity Framework 5 和以前版本的 Entity Framework 中,代码在作为 .NET Framework 的一部分提供的核心库(主要是 System.Data.Entity.dll)之间划分,而附加库(主要是 EntityFramework.dll)则被分发和发布使用 NuGet 进行交付,如下图所示。
在 Entity Framework 6 中,以前属于 .NET 框架一部分的核心 API 也作为 NuGet 包的一部分提供和分发。
这是允许实体框架开源所必需的。但是,因此,每当需要将应用程序从旧版本的实体框架迁移或升级到 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 设计器创建的模型,那么您还需要更新代码生成模板以生成 EF6 兼容代码。
步骤 5 - 在解决方案资源管理器中的 edmx 文件下,删除通常命名为 <edmx_file_name>.tt 和 <edmx_file_name>.Context.tt 的现有代码生成模板。
步骤 6 - 在 EF 设计器中打开模型,右键单击设计图面并选择添加代码生成项...
步骤 7 - 添加适当的 EF 6.x 代码生成模板。
它还会自动生成 EF6 兼容代码。
如果您的应用程序使用 EF 4.1 或更高版本,则无需更改代码中的任何内容,因为 DbContext 和 Code First 类型的命名空间没有更改。
但是,如果您的应用程序使用旧版本的实体框架,则以前位于 System.Data.Entity.dll 中的 ObjectContext 等类型已移至新的命名空间。
步骤 8 - 您将需要更新您的 using 或 Import 指令以针对 EF6 进行构建。
命名空间更改的一般规则是 System.Data.* 中的任何类型都会移动到 System.Data.Entity.Core.*。以下是其中一些 -
- System.Data.EntityException ⇒ System.Data.Entity.Core 。实体异常
- System.Data.Objects.ObjectContext⇒System.Data.Entity.Core 。对象.ObjectContext;
- System.Data.Objects.DataClasses.RelationshipManager ⇒ System.Data.Entity.Core 。Objects.DataClasses.RelationshipManager;
某些类型位于Core命名空间中,因为它们不直接用于大多数基于 DbContext 的应用程序。
- 系统.数据.实体状态⇒系统.数据.实体.实体状态
- System.Data.Objects.DataClasses.EdmFunctionAttribute ⇒ System.Data.Entity.DbFunctionAttribute
您现有的实体框架项目将在实体框架 6.0 中运行,无需任何重大更改。