一、为模型更改设置 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. virt-manager管理整个云平台的instances

    http://people.redhat.com/~rjones/virt-top/faq.html

  2. 浅谈Web缓存

    在前端开发中性能一直都是被大家所重视的一点,然后判断一个网站的性能最直观的就是看网页打开的速度. 其中提高网页反应的速度的一个方式就是使用缓存.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟, ...

  3. webservice wsdl axis2报错 Provider com.bea.xml.stream.MXParserFactory not found

    错误信息: Exception in thread "main" javax.xml.stream.FactoryConfigurationError: Provider com. ...

  4. etc 安装及使用

    键值存储仓库,用于配置共享和服务发现. A highly-available key value store for shared configuration and service discover ...

  5. DataRow循环取出

    string strName = null; DataRow dRow = DB.GetDataRow(Sql语句); if (null != dRow) { foreach (DataRow ite ...

  6. 分析一个类似于jquery的小框架 (2)

    核心构造函数 (function ( window, undefined ) { // 定义Itcast构造函数 function Itcast ( selector ) { return new I ...

  7. 灵活运用 SQL SERVER FOR XML PATH

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  8. px 和 em

    px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸. ...

  9. iOS图片模糊效果与阴影效果

    /** 添加图片模糊效果 @parms  要添加模糊效果的view @return */ + (UIVisualEffectView *)addVisualEffectViewWithView:(UI ...

  10. C++拼接字符串

    例如: 在"/data/misc/media/out.yuv"后面添加序号操作,并输出在path char path[128] = {0}; int Num=this->mN ...