EF迁移命令
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迁移命令的更多相关文章
- EF数据迁移命令
在包管理器控制台中输入命令“enable-migrations”,然后按Enter键!Visual Studio将生成一个名为“Configurations.cs”的文件; 你可以安全地忽略它,但你需 ...
- EFCore数据库迁移命令整理
前言 因为现在用.net core 开发新项目,过程中需要经常涉及到数据命令的迁移,今天分别整EFCore 的两种迁移数据库的方式 1 程序包管理器控制台 , Package Manager Con ...
- Entity Framework 迁移命令 详解
一.Entity Framework 迁移命令(get-help EntityFramework) Enable-Migrations 启用迁移 Add-Migration 为挂起的Model变化添加 ...
- 静态文件link 数据库迁移命令 新建app命令
<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css"& ...
- 项目那几步走:先配置setting路径文件、创建数据库、执行数据库迁移命令、配置mysql数据库信息、注册app、注释中间件、pymysql替换mysqldb-配置urls路由-继续视图函数-然后HTML页面展示-HTML里面导入css文件、models配置数据库表、
django使用mysql数据库: 首先cmd创建库 1.settings: """Django settings for day42 project. Generate ...
- Django迁移命令无法生成mysql表
数据库迁移问题:在执行python manage.py makemigrations迁移命令之后,正常输出并生成迁移文件,但执行python manage.py migrate之后显示,No migr ...
- Entity Framework Core中的数据迁移命令
使用程序包管理控制台输入命令. 数据迁移命令: Add-Migration 对比当前数据库和模型的差异,生成相应的代码,使数据库和模型匹配的. Remove-Migration 删除上次的迁移 Sc ...
- EF Core 多个DbContext迁移命令
如果涉及多个项目,注意保持DbContext所在项目和启动项目关于数据库的包引用版本一致 注意设置不同的DbContext迁移文件目录不同 1.Enable-migrations EntityFram ...
- EF Code First 数据迁移命令
只需要开启程序管理控制台(Package Manager Console) 然后输入 Enable-Migrations -ContextTypeName youContextdb(你的数据库上下文 ...
随机推荐
- 性能测试八:jmeter进阶之beanshell
* BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; * BeanShell是一种松散类型的脚本语言(这点和JS类似); * BeanShell是用Java ...
- js事件驱动函数
输入框 获得光标的这个行为叫做获取焦点 失去光标的这个行为叫做失去焦点 blur 失去焦点 1.获取标签的时候,一定要先等页面加载完成,再去获取这个标签. 可以将整个script代码写在body的下面 ...
- 步步为营-23-通过GridView实现增删改
说明:把xml中的数据放入到数据源list中然后显示到gridview中,参考上一节内容 1 UI页面 2创建student类 public class Student { public int ID ...
- 《剑指offer》-找到数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- POJ 1065 Wooden Sticks【贪心】
题意: 有一些木棍,每个有长度和重量,要求把这些木棍排成若干两个属性值均不下降的序列.问至少要分为多少个序列.且要保证排出来的子序列数最少. 思路: ( 9 , 4 ) ,( 2 , 5 ) ,( 1 ...
- hdu 1542
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意: 求所给矩形的覆盖面积 题解: 利用扫描线的思想,先将坐标离散化,之后以y轴分成多个矩形求解, ...
- Android环境的搭建及Android Studio的安装
菜鸟初来报到,写了一篇关于Android环境搭建和Android Studio安装的内容(写好很久了,一直没发).仅供想开发Android,却又不知如何搭建环境的小白们参考,高手们就请绕行吧.在此献丑 ...
- 如何在VS Code中进行golang编程
在VS Code中编程 使用Visual Studio Code的Go扩展,您可以获得诸如IntelliSense,代码导航,符号搜索,括号匹配,片段等语言功能,这些功能将帮助您进行Golang开发. ...
- 2n皇后问题【dfs】
<题目链接> 题目描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后 ...
- P1510 精卫填海
P1510 精卫填海二分答案二分背包容量,判断能否满足v.判断的话就跑01背包就好了. #include<iostream> #include<cstdio> #include ...