一、为模型更改设置 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进行数据迁移之添加字段的更多相关文章

  1. ASP.NET MVC 5 学习教程:数据迁移之添加字段

    原文 ASP.NET MVC 5 学习教程:数据迁移之添加字段 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符 ...

  2. MVC 使用EF Code First数据迁移之添加字段

    PM> add-migration 20161109   -Force 正在为迁移“20161109”搭建基架.此迁移文件的设计器代码包含当前 Code First 模型的快照.在下一次搭建迁移 ...

  3. CodeFirst解决数据迁移问题

    CodeFirst解决数据迁移问题 分类: 数据库 设计模式 c#2013-04-24 17:56 137人阅读 评论(0) 收藏 举报 工程用的MVC + Entity Framework,根据Co ...

  4. Django 向数据表中添加字段方法

    在模型order中添加字段discount字段,并给予初始值0 方法: 先在models.py中修改模型 添加 discount = models.DecimalField(max_digits=8, ...

  5. MVC5+EF6+MYSQl,使用codeFirst的数据迁移

    之前本人在用MVC4+EF5+MYSQL搭建自己的博客.地址:www.seesharply.com;遇到一个问题,就是采用ef的codefirst模式来编写程序,我们一般会在程序开发初期直接在glob ...

  6. 实现CodeFirst自动数据迁移无需命令

    本主题假设您掌握了实体框架中 Code First 迁移的基本知识. 借助自动迁移功能,您无需对您所做的每一个更改都在程序包管理器控制台中运行Update-Database 命令. 启用迁移 只需执行 ...

  7. 实现CodeFirst自动数据迁移无需手动执行命令

    本主题假设您掌握了实体框架中 Code First 迁移的基本知识. 借助自动迁移功能,您无需对您所做的每一个更改都在程序包管理器控制台中手动Update-Database . 启用迁移 只需执行一次 ...

  8. EF Core数据迁移操作

    摘要 在开发中,使用EF code first方式开发,那么如果涉及到数据表的变更,该如何做呢?当然如果是新项目,删除数据库,然后重新生成就行了,那么如果是线上的项目,数据库中已经有数据了,那么删除数 ...

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

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

随机推荐

  1. vi和vim 的常用操作

    到文件末尾: ESC + shift G : 到文件头: G + G: 整块模式 快捷键  [不使用鼠标,来选择块] v                   字符选择,会将光标经过的地方反白选择! V ...

  2. Android工作学习第5天之Activity的传值问题

    注:本文大部分为网上转载,本人只是根据工作的需要略做整合! 本章将借用一个实例,讲解如何注册并激活一个新的Activity,以及多个Activity之间如何传值. 下面是主Activity的代码: [ ...

  3. Linux 用户和用户组管理

    Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...

  4. jQuery Validate + Ckeditor 驗證 textarea 解決方式

    jQuery Validate + Ckeditor 驗證 textarea 解決方式 html <textarea name="content" id="cont ...

  5. Thinkphp源码分析系列(四)–Dispatcher类

    下面我们来分析一下Thinkphp中的url解析和路由调度类.此类主要功能是 // +--------------------------------------------------------- ...

  6. docker help

    localhost == 127.0.0.1 == 本机ip ifconfig 或者 ip addr 查看本地宿主机的ip地址 $ docker help Usage: docker [OPTIONS ...

  7. 使用 Wireshark 调试 HTTP/2 流量

    https://imququ.com/post/http2-traffic-in-wireshark.html

  8. Mbps、Kbps、bps、MB、KB

    1:运营商带宽衡量单位: Mbps:百万位每秒 kbps:千位每秒 bps:位每秒 b:bit,比特 1Mbps=1000kbps=1,000,000bps 这些单位通常用来表示每秒传输的二进制位 2 ...

  9. 移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法

    这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来. 做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且to ...

  10. {POJ}{3971}{Scales}{O(N)动态规划}

    题意:给定一堆2二进制砝码,给定一个物品,要求在天平两端加入物品和砝码使之平衡,求可能数. 思路:一开始想到了直接用数学原理,结果没证出来.做如下思考,此题需要用二进制: (1)设物品重量为w,加入的 ...