EF迁移设置的最后一步是在包管理器控制台中输入命令“add-migration InitialMigration -IgnoreChanges”。“InitialMigration”(高亮的黄色)是您想要给当前迁移的名称,“IgnoreChanges”句柄是告诉EF Migrations您想要忽略当前数据库:这意味着您希望EF忽略所有现有表,以便不会为现有表生成脚本。

enable-migrations

update-database

获取迁移的脚本

在运行 Update-Database 的时候,使用参数 -Script 。

-SourceMigration:$InitialDatabase 用来指定起始的版本, -TargetMigration:"AddPostAbstract" 用来指定目标版本。

Update-Database to bring the database up-to-date. This time let’s specify the –Verbose flag so that you can see the SQL that Code First Migrations is running.

https://msdn.microsoft.com/en-us/data/jj591621.aspx#script

1.Add-Migration Initia-IgnoreChanges 生成已有数据库初始化代码

2.update-database -verbose 升级数据库并显示sql语句

3.Update-Database -Script -SourceMigration:"201309201643300_AddCity.cs" -TargetMigration:"201309201708043_ModifyCity.cs"  这个是生成两次迁移的sql语句,TargetMigration省略是到最新

4.simplemembership的数据库没有migration表 所以迁移的时候如果丢失了迁移类会很麻烦,建议手工修改即可。

5.context的静态构造函数中可以设置数据库初始化器(用于调试)

1
2
3
4
5
6
7
8
9
10
static PortalContext()
{
    Database.SetInitializer<PortalContext>(null);
 
 
//DropCreateDatabaseIfModelChanges
//CreateDatabaseIfNotExists
//DropCreateDatabaseAlways
//MigrateDatabaseToLatestVersion
}

6.Get-Migrations 获取已经应用的迁移

7.Enable-Migrations

在Package Manager Console中执行Enable-Migrations启动迁移。

执行get-help Enable-Migrations –detailed 查看Enable-Migrations的详细用法。

-ContextTypeName 指定要使用的Context

-EnableAutomaticMigrations 启动自动迁移

-ProjectName 指定搭建的迁移类添加到的项目

-StartUpProjectName 指定使用的配置文件所在的项目

-ConnectionStringName 指定使用配置文件中连接字符串的名称

-ConnectionString 指定使用的连接字符串

-ConnectionProviderName 指定连接字符串的provider名称

8.Add-Migration

在Package Manager Console中执行Add-Migration搭建挂起的Model变化迁移脚本。

执行get-help Add-Migration –detailed查看Add-Migration的详细用法。

-Name 指定自定义脚本的名称

-Force

-ProjectName

-StartUpProjectName

-ConfigurationTypeName 指定使用的迁移配置

-IgnoreChanges 忽略检测到挂起的model改变,创建一个空的迁移。这个选项可用来为已有的数据库启用迁移创建一个初始的,空的迁移。

-ConnectionStringName 指定使用配置文件中连接字符串的名称

-ConnectionString 指定使用的连接字符串

-ConnectionProviderName 指定连接字符串的provider名称

9.Update-Database

在Package Manager Console中执行Update-Database将挂起的迁移更新到数据库。

执行get-help Update-Database -detailed查看Add-Migration的详细用法。

-SourceMigration 只有-Script打开时才有效。指定迁移的名称用作更新的起点。忽略则使用最后一次应用的迁移。

-TargetMigration 指定将数据库更新到哪个迁移的名称。

-Script 生成SQL脚本

-Force

-ProjectName

-StartProjectName

- ConfigurationTypeName

-ConnectionStringName 指定使用配置文件中连接字符串的名称

-ConnectionString 指定使用的连接字符串

-ConnectionProviderName 指定连接字符串的provider名称

http://blog.csdn.net/foren_whb/article/details/45576853

Context构造函数
不检查__MigrationHistory 取消当数据库模型发生改变时删除当前数据库重建新数据库的设置。
Database.SetInitializer<Context>(null);
重新创建数据库
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>()); 
重建数据库运行,生产环境此法严禁使用。

迁移方法1:
AutomaticMigrationsEnabled=true;自动迁移
Enable-Migrations 启用迁移
Add-Migration 为挂起的Model变化添加迁移脚本
Update-Database 将挂起的迁移更新到数据库
Update-Database -Verbose 将模型更新到数据库中并显示更新脚本,将更新脚本复制下来在生产环境中运行
Get-Migrations 获取已经应用的迁移

AutomaticMigrationsEnabled=false;非自动迁移
Enable-Migrations [-ContextTypeName <String>] [-EnableAutomaticMigrations] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConnectionStringName <String>] [-Force] [<CommonParameters>]
ContextTypeName:项目继承自DBContext的类名字。
EnableAutomaticMigrations:开启自动迁移。
ProjectName:存放DBContext类的项目名称。
StartUpProjectName:解决方案中启动项目的名称,作用是调用该项目下的连接字符串。
ConnectionStringName:连接字符串名称
上面五个参数是解决问题必须的,其它的无关紧要。
例如:
Enable-Migrations -ContextTypeName "MVCCodeFirst.BlogEntities" -ProjectName "MVCCodeFirst" -StartUpProjectName "MVCCodeFirst" -ConnectionStringName "BlogEntities" -Verbose
依次填好之后,问题解决。
同样的在Add-Migration、Update-Database的时候也需要填写相应的参数。否则会出现同样错误。
例如:
Add-Migration -Name "EditCST_DevicePhoto"  -ProjectName "DBAccessLib" -StartUpProjectName "WebSite" -ConnectionStringName "TJSSDBContext" -Verbose
Update-Database -Script -ProjectName "DBAccessLib" -StartUpProjectName "WebSite" -ConnectionStringName "TJSSDBContext"  -Verbose

迁移方法2:
生产环境中__MigrationHistory表删除,将生产环境中的表与模型更新成一致。

EF迁移命令的更多相关文章

  1. EF数据迁移命令

    在包管理器控制台中输入命令“enable-migrations”,然后按Enter键!Visual Studio将生成一个名为“Configurations.cs”的文件; 你可以安全地忽略它,但你需 ...

  2. EFCore数据库迁移命令整理

    前言  因为现在用.net core 开发新项目,过程中需要经常涉及到数据命令的迁移,今天分别整EFCore 的两种迁移数据库的方式 1 程序包管理器控制台 , Package Manager Con ...

  3. Entity Framework 迁移命令 详解

    一.Entity Framework 迁移命令(get-help EntityFramework) Enable-Migrations 启用迁移 Add-Migration 为挂起的Model变化添加 ...

  4. 静态文件link 数据库迁移命令 新建app命令

    <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css"& ...

  5. 项目那几步走:先配置setting路径文件、创建数据库、执行数据库迁移命令、配置mysql数据库信息、注册app、注释中间件、pymysql替换mysqldb-配置urls路由-继续视图函数-然后HTML页面展示-HTML里面导入css文件、models配置数据库表、

    django使用mysql数据库: 首先cmd创建库 1.settings: """Django settings for day42 project. Generate ...

  6. Django迁移命令无法生成mysql表

    数据库迁移问题:在执行python manage.py makemigrations迁移命令之后,正常输出并生成迁移文件,但执行python manage.py migrate之后显示,No migr ...

  7. Entity Framework Core中的数据迁移命令

    使用程序包管理控制台输入命令. 数据迁移命令: Add-Migration  对比当前数据库和模型的差异,生成相应的代码,使数据库和模型匹配的. Remove-Migration 删除上次的迁移 Sc ...

  8. EF Core 多个DbContext迁移命令

    如果涉及多个项目,注意保持DbContext所在项目和启动项目关于数据库的包引用版本一致 注意设置不同的DbContext迁移文件目录不同 1.Enable-migrations EntityFram ...

  9. EF Code First 数据迁移命令

    只需要开启程序管理控制台(Package Manager Console) 然后输入  Enable-Migrations -ContextTypeName youContextdb(你的数据库上下文 ...

随机推荐

  1. DDD领域模型数据访问权限之权限(十二)

    实现权限的领域对象:BAS_Permission public partial class BAS_Permission:AggreateRoot { private IRepository<B ...

  2. poj 1751 输出MST中新加入的边

    给出结点的坐标 以及已建好的边 要输出MST中加入的边(已建好的边就不用输出了)结点的编号从1开始注意这题只有一组数据 不能用多组输入 否则就超时(在这被坑惨了Orz) Sample Input 91 ...

  3. jsp+servlet实现最基本的注册登陆功能

    源码和数据库下载地址:http://download.csdn.net/detail/biexiansheng/9759722 1:首先需要设计好数据库和数据表,这里简单截图说明我创建的字段和类型. ...

  4. [转] Java接口_interface_implements

    相对抽象类来讲,接口就是比抽象类还要抽象的抽象类,丝毫不带半点实现的内容.接口可以更加规范的对子类进行约束.接口全面地专业地实现了:规范和具体实现的分离.接口就是规范,定义的是一组规则,提现了现实世界 ...

  5. gulp给文件加版本号

    版本号用文件MD5生成 默认根据文件MD5生成,因此文件未发生改变,此版本号将不会变 所以当没有改变文件的时候,我们就不能用gulp来改变版本号了 需要安装的插件 npm install --save ...

  6. bzoj2654

    题解: 老早看的并没有写 wqs二分的原理和这个凸函数的性质已经证明过了 写的时候 主要的问题在于每次的答案是一个范围 什么意思呢 其实比较简单的做法是 优先取白边,优先取黑边做两次 然后看一下要求的 ...

  7. HDU5818 Joint Stacks 左偏树,可并堆

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU5818 题意概括 有两个栈,有3种操作. 第一种是往其中一个栈加入一个数: 第二种是取出其中一个栈的顶 ...

  8. 6-2 铁轨 uva 514

    较为简单的stack题目 但是还是犯了一些错误: 1. 要想清空栈,直接重新定义较为方便! 2.在if(s.top()==x)时  加上  !s.empty()  否则程序会崩溃 3. 必须要加上i- ...

  9. 037 对于HIVE架构的理解

    0.发展 在hive公布源代码之后 公司又公布了presto,这个比较快,是基于内存的. impala:3s处理1PB数据. 1.Hive  能做什么,与 MapReduce 相比优势在哪里 关于hi ...

  10. Pathon1 - 基础1

    一. Hello world程序 print("Hello World!") 执行命令: python hello.py ,输出 执行 python hello.py 时,明确的指 ...