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开发,数据迁移是一个不得不提的技术. 在我们的开发过程中,难免需要对模型进行改进,模型改进后,会导致实体集与数据库不一致,当然我们可以通过删除数 ...
随机推荐
- vi和vim 的常用操作
到文件末尾: ESC + shift G : 到文件头: G + G: 整块模式 快捷键 [不使用鼠标,来选择块] v 字符选择,会将光标经过的地方反白选择! V ...
- Android工作学习第5天之Activity的传值问题
注:本文大部分为网上转载,本人只是根据工作的需要略做整合! 本章将借用一个实例,讲解如何注册并激活一个新的Activity,以及多个Activity之间如何传值. 下面是主Activity的代码: [ ...
- Linux 用户和用户组管理
Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...
- jQuery Validate + Ckeditor 驗證 textarea 解決方式
jQuery Validate + Ckeditor 驗證 textarea 解決方式 html <textarea name="content" id="cont ...
- Thinkphp源码分析系列(四)–Dispatcher类
下面我们来分析一下Thinkphp中的url解析和路由调度类.此类主要功能是 // +--------------------------------------------------------- ...
- docker help
localhost == 127.0.0.1 == 本机ip ifconfig 或者 ip addr 查看本地宿主机的ip地址 $ docker help Usage: docker [OPTIONS ...
- 使用 Wireshark 调试 HTTP/2 流量
https://imququ.com/post/http2-traffic-in-wireshark.html
- Mbps、Kbps、bps、MB、KB
1:运营商带宽衡量单位: Mbps:百万位每秒 kbps:千位每秒 bps:位每秒 b:bit,比特 1Mbps=1000kbps=1,000,000bps 这些单位通常用来表示每秒传输的二进制位 2 ...
- 移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法
这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来. 做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且to ...
- {POJ}{3971}{Scales}{O(N)动态规划}
题意:给定一堆2二进制砝码,给定一个物品,要求在天平两端加入物品和砝码使之平衡,求可能数. 思路:一开始想到了直接用数学原理,结果没证出来.做如下思考,此题需要用二进制: (1)设物品重量为w,加入的 ...