1.启用迁移

  • 在Package Manager Console中运行Enable-Migrations命令

此命令已将Migrations文件夹添加到我们的项目中,此新文件夹包含两个文件:

  • Configuration.cs(配置类) : 此类允许您配置迁移对您的上下文的行为
  • InitialCreate(初始创建迁移):这种迁移是因为在启用迁移之前,已经有Code First为我们创建了一个数据库。此支架迁移中的代码表示已在数据库中创建的对象。
 
 
2.生成和运行迁移
代码优先迁移有两个主要的命令,你将会变得熟悉。
(1)根据自上次迁移创建以来,对您的模型所做的更改,Add-Migration将支持下一次迁移
(2)Update-Database将应用任何挂起的迁移到数据库
步骤:
修改model里面的类的属性货方法,然后运行 指令:
  • Add-Migration + 迁移名称    
  • Update-Database      将应用任何挂起的迁移到数据库
 
3.自定义迁移
    先Add-Migration 迁移名称 
然后修改 
最后Update-Database
4.数据运动/自定义SQL
实例:
    namespace MigrationsDemo.Migrations
{
using System;
using System.Data.Entity.Migrations; public partial class AddPostAbstract : DbMigration
{
public override void Up()
{
AddColumn("dbo.Posts", "Abstract", c => c.String()); Sql("UPDATE dbo.Posts SET Abstract = LEFT(Content, 100) WHERE Abstract IS NULL");
} public override void Down()
{
DropColumn("dbo.Posts", "Abstract");
}
}
}
 
5.迁移到特定版本(包括降级)
Update-Database -TargetMigration:指定迁移的名称
例如:
Update-Database -TargetMigration:AddBlogUrl
 
6.获取SQL脚本
Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: AddPostAbstract(指定的数据迁移名称)
7.自动升级应用程序启动(MigrateDatabaseToLatestVersion Initializer)
如果您正在部署应用程序,则可能希望在应用程序启动时自动升级数据库(通过应用任何挂起的迁移)。您可以通过注册MigrateDatabaseToLatestVersion数据库初始化程序来执行此操作。数据库初始化程序只包含一些用于确保数据库设置正确的逻辑。该逻辑首次在应用程序进程(AppDomain)中使用上下文时运行。 
我们可以更新Program.cs文件,如下所示,在使用上下文(第14行)之前,为BlogContext设置MigrateDatabaseToLatestVersion初始值。请注意,您还需要为System.Data.Entity命名空间添加一个using语句(第5行)。 
当我们创建这个初始化器的一个实例时,我们需要指定上下文类型(BlogContext )和迁移配置(配置) - 迁移配置是当我们启用Migrations时添加到Migrations文件夹的类。 

Database.SetInitializer(new MigrateDatabaseToLatestVersion ()); 
 

EntityFramework数据迁移(笔记)的更多相关文章

  1. MS SQL到Oracle的数据迁移笔记

    MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能 ...

  2. 重置EntityFramework数据迁移到洁净状态

    前言 翻译一篇有关EF数据迁移的文章,以备日后所用,文章若有翻译不当的地方请指出,将就点看,废话少说,看话题.[注意]:文章非一字一句的翻译,就重要的问题进行解释并解决. 话题引入 无法确定这种场景是 ...

  3. Oracle数据迁移笔记-Rownum与序列的自增长的组合用法技巧

    Rownum与序列的自增长的组合用法技巧 根据序列自增长的步长规律,结合表行记录Rownum值的规则批量生成表的行记录主键的用法技巧 案例如下: CREATE OR REPLACE PROCEDURE ...

  4. C#+EntityFramework编程方式详细之Code First 数据迁移

    在前几篇的C#+EntityFramework编程方式中介绍了C#+EntityFramework编程方式Code First ,Model First以及Dtatabase First 等编程方式, ...

  5. EntityFramework Code First便捷工具——数据迁移

    使用EntityFramework Code First开发,数据迁移是一个不得不提的技术. 在我们的开发过程中,难免需要对模型进行改进,模型改进后,会导致实体集与数据库不一致,当然我们可以通过删除数 ...

  6. 笔记:EF出现列名 'Discriminator' 无效、类没有加入数据库上下文也被数据迁移生成表

    笔记: EF出现列名 'Discriminator' 无效: 类没有加入数据库上下文也被数据迁移生成表: 出现该问题一般是使用了某个基类继承了实体类: 原因是code first的POCO实体对象的继 ...

  7. EntityFramework Code First 模式下使用数据迁移

    启用数据迁移 在程序包管理控制台选择安装了EntityFramework的项目,键入如下指令以启EF用数迁移. Enable-Migrations 命令成功运行后,所选项目下会添加名为Migratio ...

  8. Oracle数据迁移-系统数据合并笔记

    创建临时表:execute immediate 'sql'; 通过临时表和关联查询解决循环处理效率低下,大数据操作移植时时间太长的问题. 结构相同的系统数据库表移植,案例如下: create or r ...

  9. 使用Code first 进行更新数据库结构(数据迁移)

    CodeFirst 背景  code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会 ...

随机推荐

  1. 51nod 1172 Partial Sums V2

    题目 给出一个数组A,经过一次处理,生成一个数组S,数组S中的每个值相当于数组A的累加,比如:A = {1 3 5 6} => S = {1 4 9 15}.如果对生成的数组S再进行一次累加操作 ...

  2. RPM软件管理

    1.源代码形式 绝大多数软件都是以源代码形式发布的:     因为开源的理念是不重复造轮子:让其它不以商业为目的人都能修改这个软件:   源代码一般会被打包成tar.gz的压缩归档文件: 程序源代码需 ...

  3. [Android]第一个cm调试分析

    0x00:写在前面  一直想入门Android安全,当时是极客大挑战出题的时候,被cx表哥甩锅强行去学了点android的开发,之后慢慢接触,感觉还是挺有意思的.cx表哥说先从逆向分析入门吧,之后可以 ...

  4. k8s集群管理注意要点【持续更新】

    1.编写pod yaml文件时绑定调度标签,必须要给指定节点绑定标签,否则无法调度到指定节点上,报错: Events: Type Reason Age From Message ---- ------ ...

  5. Lock和synchronized的区别

    总结来说,Lock和synchronized有以下几点不同: 1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现: 2)synchroni ...

  6. Vue.Draggable拖拽效果

    1.下载包:npm install vuedraggable 配置:package.json "dependencies": { "vuedraggable": ...

  7. R-ets()

    前情需知 指数预测模型 指数模型是用来预测时序未来值的最常用模型.这类模型相对比较简单,但是实践证明它们的短期预测能力较好.不同指数模型建模时选用的因子可能不同.比如 单指数模型(simple/sin ...

  8. Inter IPP+ VS + opencv 在 Windows下的环境搭建

    首先Inter官网申请和下载:https://software.intel.com/en-us/intel-ipp 需要VS2013或更高版本(先装vs再装IPP,我的版本是VS2015社区版,IPP ...

  9. HTTP服务器(2)

    import socket import re import multiprocessing def service_client(new_socket): """为这个 ...

  10. scrapy_redis的使用

    配置Scrapy-Redis 配置Scrapy-Redis非常简单,只需要修改一下settings.py配置文件即可. 1. 核心配置 首先最主要的是,需要将调度器的类和去重的类替换为Scrapy-R ...