1. 程式人生 > >EF數據遷移

EF數據遷移

sqli ann column public rem 代碼 name 解決 upd

在項目中使用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數據遷移