CodeFirst进行数据迁移之添加字段
一、为模型更改设置 Code First 数据迁移
1、工具—>库程序包管理器—>程序包管理器控制台—>输入“Enable-Migrations” 或者
Enable-Migrations -ContextTypeName Mvc.Models.DataContext
Enable-Migrations -ContextTypeName 命名空间.上下文名称
注:如果正确的话 则显示“已为项目 xxx启用 Code First 迁移。”,
Enable-Migrations命令创建了一个Migrations文件夹和Configuration.cs文件
2、程序包管理器控制台—>输入“add-migration Initial”创建初始化迁移。
注:名称“Initial”是随意命名,即要添加的字段。用来命名创建好的迁移文件。
3、程序包管理器控制台—>输入“update-database”
4、运行程序,更新完毕。
二、进一步
问题已经解决了,我们再来深入一下这种迁移方式。
当我们增加列(增加实体字段)时,可以不必重复上面的所有操作。
1、只需要将\Migrations\Configuration.cs文件中的AutomaticMigrationsEnabled = false;改成true
2、工具—>库程序包管理器—>程序包管理器控制台—>输入“update-database”
三、当我们删除列(删除实体字段)时,同样使用上面的操作,没有成功,报会丢失数据,
所以不能简单地执行“update-database”就能完成。
1、执行命令“add-migration Initial”
2、执行命令“update database”
3、运行程序,更新完毕
四、很强大的迁移
public class ContactContext : DbContext
{
public ContactContext()
: base("name=DefaultConnection")
{
//自动创建表,如果Entity有改到就更新到表结构
Database.SetInitializer<ContactContext>(new MigrateDatabaseToLatestVersion<ContactContext, ReportingDbMigrationsConfiguration>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //表名为类名,不是上面带s的名字 //移除复数表名的契约
modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); //不创建EdmMetadata表 //防止黑幕交易 要不然每次都要访问 EdmMetadata这个表
}
public DbSet<City> Cities { get; set; }
public DbSet<Area> Area { get; set; }
public DbSet<Campaign> Campaign { get; set; }
}
internal sealed class ReportingDbMigrationsConfiguration : DbMigrationsConfiguration<ContactContext>
{
public ReportingDbMigrationsConfiguration()
{
AutomaticMigrationsEnabled = true;//任何Model Class的修改將會直接更新DB
AutomaticMigrationDataLossAllowed = true;
}
}
参考网址
http://www.cnblogs.com/hugh251325/archive/2013/03/21/2972431.html
http://www.cnblogs.com/youring2/p/mvc-5-adding-a-new-field.html
http://blog.csdn.net/zy332719794/article/details/8845405
http://www.ejutuo.com/bbs/thread-3225-1-1.html
http://www.cnblogs.com/chinabc/archive/2013/01/16/2846062.html MVC中Code First编程一些小技巧
CodeFirst进行数据迁移之添加字段的更多相关文章
- ASP.NET MVC 5 学习教程:数据迁移之添加字段
原文 ASP.NET MVC 5 学习教程:数据迁移之添加字段 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符 ...
- MVC 使用EF Code First数据迁移之添加字段
PM> add-migration 20161109 -Force 正在为迁移“20161109”搭建基架.此迁移文件的设计器代码包含当前 Code First 模型的快照.在下一次搭建迁移 ...
- CodeFirst解决数据迁移问题
CodeFirst解决数据迁移问题 分类: 数据库 设计模式 c#2013-04-24 17:56 137人阅读 评论(0) 收藏 举报 工程用的MVC + Entity Framework,根据Co ...
- Django 向数据表中添加字段方法
在模型order中添加字段discount字段,并给予初始值0 方法: 先在models.py中修改模型 添加 discount = models.DecimalField(max_digits=8, ...
- MVC5+EF6+MYSQl,使用codeFirst的数据迁移
之前本人在用MVC4+EF5+MYSQL搭建自己的博客.地址:www.seesharply.com;遇到一个问题,就是采用ef的codefirst模式来编写程序,我们一般会在程序开发初期直接在glob ...
- 实现CodeFirst自动数据迁移无需命令
本主题假设您掌握了实体框架中 Code First 迁移的基本知识. 借助自动迁移功能,您无需对您所做的每一个更改都在程序包管理器控制台中运行Update-Database 命令. 启用迁移 只需执行 ...
- 实现CodeFirst自动数据迁移无需手动执行命令
本主题假设您掌握了实体框架中 Code First 迁移的基本知识. 借助自动迁移功能,您无需对您所做的每一个更改都在程序包管理器控制台中手动Update-Database . 启用迁移 只需执行一次 ...
- EF Core数据迁移操作
摘要 在开发中,使用EF code first方式开发,那么如果涉及到数据表的变更,该如何做呢?当然如果是新项目,删除数据库,然后重新生成就行了,那么如果是线上的项目,数据库中已经有数据了,那么删除数 ...
- EntityFramework Code First便捷工具——数据迁移
使用EntityFramework Code First开发,数据迁移是一个不得不提的技术. 在我们的开发过程中,难免需要对模型进行改进,模型改进后,会导致实体集与数据库不一致,当然我们可以通过删除数 ...
随机推荐
- sql install error
解决SQL Server 2008 R2安装过程中提示Could not open key的解决方法:以管理员身份运行CMD命令提示符,输入以下语句并运行就OK了secedit /configure ...
- C#小程序呢飞行棋设计分析
C#小程序飞行棋,程序效果图 1.设计分析 这个程序界面大致分为四部分: ① 最上面游戏名字界面 ②信息提示区 ③游戏界面区 ④游戏操作提示区 2.分区设计实现 一.游戏界面显示区,由于只需要显示出图 ...
- oracle 实现ID自增
CREATE TABLE testTable1 ( ID INT NOT NULL, NAME ) NOT NULL, PRIMARY KEY(ID) ) TABLESPACE MYDB; --创建自 ...
- linux pam 控制模式
工作类别(type).流程栈(stack)和控制模式(control) Linux-PAM 工作的"类别"(type) PAM 的具体工作主要有以下四种类别(type):accou ...
- c#winform程序,修改MessageBox提示框中按钮的文本
用winform的MessageBox是实现不了的,这里我用的是DevExpress控件的XtraMessageBoxForm 例如如果想在一个提示框里修改"是","否& ...
- for 小曦
安装GO 当前版本1.6.2 http://blog.163.com/hehaifeng1984@126/blog/static/690011362013101044011568/ 教程 https: ...
- js数组的操作
很早之前整理的一篇文章,感觉比较清晰. 一.数组元素的操作 1.数组的创建 var arrayObj = new Array(); var arrayObj = new Array(size); // ...
- 使用二分法查找mobile文件中区号归属地
#!/usr/bin/env python #coding:utf-8 ''' Created on 2015年12月8日 @author: DL @Description: 使用二分法查找mobil ...
- python文件操作实例
把目录 E:\ 下面所有 后缀名为 .py 的 文件复制到 E:\PyLearn #coding:utf-8 import os import shutil def getfile(srcDir,ds ...
- RandomAccessFile使用小结
本文是基于Linux环境运行,读者阅读前需要具备一定Linux知识 RandomAccessFile是Java输入/输出流体系中功能最丰富的文件内容访问类,既可以读取文件内容,也可以向文件输出数据.与 ...