EF数据迁移

Posted chenh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF数据迁移相关的知识,希望对你有一定的参考价值。

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

public partial class Initial : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
                name: "Posts",
                columns: table => new
                {
                    Id = table.Column<int>(nullable: false)
                        .Annotation("Sqlite:Autoincrement", true),
                    Title = table.Column<string>(nullable: true),
                    Author = table.Column<string>(nullable: true),
                    Body = table.Column<string>(nullable: true),
                    LastModified = table.Column<DateTime>(nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Posts", x => x.Id);
                });
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "Posts");
        }
    }

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

当后期对Entity进行了修改时,再次运行 add-migration migrationname 和update-database这两个命令,即可再生成一个同步文件,并将修改更新到数据库中。

注意两个问题:

  1、不能随意删除Migration文件夹内的同步文件,否则数据同步会失败,问题解决很麻烦。

  2、每次add-Migration时取的文件名不能重名

  

以上是关于EF数据迁移的主要内容,如果未能解决你的问题,请参考以下文章

20.2.翻译系列:EF 6中基于代码的数据库迁移技术EF 6 Code-First系列

如何禁用代码优先迁移

将所有环境迁移到最新版本后,是不是有理由保留 EF 迁移代码?

如何禁用代码首次迁移

添加新迁移时,EF 数据迁移不会检测到更改

在EF代码中使用View首先与迁移冲突