码迷,mamicode.com
首页 > 其他好文 > 详细

EF 数据迁移问题总结

时间:2016-05-14 16:50:11      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

  在项目中使用Entity Framework的Code First模式,进行数据迁移时,Migration文件夹中存放的是每一次Entity的修改如何同步到数据的操作方法,每个文件中都只有Up和Down这两个方法。例如第一次数据迁移时,会创建数据表,在程序包管理控制台中输入命令:add-migration migrationname,会生成一个migrationname.cs的文件,在对应的Migration类文件的代码如下:

 1 public override void Up()
 2         {
 3             CreateTable(
 4                 "dbo.FileBoxes",
 5                 c => new
 6                     {
 7                         Id = c.Long(nullable: false, identity: true),
 8                         FileNo = c.String(),
 9                         FileTitle = c.String(),
10                         Version = c.String(),
11                         FileType = c.String(),
12                         BoxNo = c.String(),
13                         ManageStyle = c.String(),
14                         Year = c.String(),
15                         Remark = c.String(),
16                     })
17                 .PrimaryKey(t => t.Id);
18             
19         }
20         
21         public override void Down()
22         {
23             DropTable("dbo.FileBoxes");
24         }

  再在程序包管理控制台中输入命令:update-database,即可将Entity的设计同步到数据库中。

  当后期对Entity进行了修改时,再次运行 add-migration migrationname 和update-database这两个命令,即可再生成一个同步文件,并将修改更新到数据库中,例如将Entity中的Year属性改为Years,生成的同步文件代码如下:

public override void Up()
        {
            AddColumn("dbo.FileBoxes", "Years", c => c.String());
            DropColumn("dbo.FileBoxes", "Year");
        }
        
        public override void Down()
        {
            AddColumn("dbo.FileBoxes", "Year", c => c.String());
            DropColumn("dbo.FileBoxes", "Years");
        }

  这里需要注意两个问题:

  1、不能随意删除Migration文件夹内的同步文件,否则数据同步会失败。本人项目中多次进行Migration,但是将第一次创建数据表的Miragtion文件删除了,总是update-database失败,找了好半天才发现原因在这里。

  2、每次add-Migration时取的文件名不能重名。命名时可以按照当天日期拼接当天的版本号组成,例如:20160514001,20160514002。

 

EF 数据迁移问题总结

标签:

原文地址:http://www.cnblogs.com/Judit/p/5492695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!