首页 > 数据库技术 > 详细

codefirst数据库迁移

时间:2017-09-11 00:23:30      阅读:313      评论:0      收藏:0      [点我收藏+]

一、为模型更改设置 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;
        }
    }

 

codefirst数据库迁移

原文:http://www.cnblogs.com/zxp6/p/7502874.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!