日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

EF mysql 数据迁移_EF Code First Migrations数据库迁移

發(fā)布時(shí)間:2025/5/22 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EF mysql 数据迁移_EF Code First Migrations数据库迁移 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、EF Code First創(chuàng)建數(shù)據(jù)庫

新建控制臺(tái)應(yīng)用程序Portal,通過程序包管理器控制臺(tái)添加EntityFramework。

在程序包管理器控制臺(tái)中執(zhí)行以下語句,安裝EntityFramework。

PM> Install-Package EntityFramework

安裝成功后,界面提示如下圖:

在新建的Portal控制臺(tái)應(yīng)用程序中添加兩個(gè)實(shí)體類,代碼結(jié)構(gòu)如下:

其中,類文件PortalContext.cs的代碼如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data.Entity;usingSystem.Data.Entity.Infrastructure;usingPortal.Entities;usingPortal.Mapping;namespacePortal

{public classPortalContext : DbContext

{staticPortalContext()

{

Database.SetInitializer(new DropCreateDatabaseIfModelChanges());

}public DbSet Provinces { get; set; }public DbSet Categories { get; set; }protected override voidOnModelCreating(DbModelBuilder modelBuilder)

{

modelBuilder.Configurations.Add(newProvinceMap());

modelBuilder.Configurations.Add(newCategoryMap());

}

}

}

在靜態(tài)構(gòu)造函數(shù)中,設(shè)置了當(dāng)數(shù)據(jù)庫模型發(fā)生改變時(shí),則刪除當(dāng)前數(shù)據(jù)庫,重建新的數(shù)據(jù)庫。

代碼執(zhí)行后,生成的數(shù)據(jù)庫:

2、EF Code First數(shù)據(jù)庫遷移

2.1、生成數(shù)據(jù)庫

修改類文件PortalContext.cs的靜態(tài)構(gòu)造函數(shù),取消當(dāng)數(shù)據(jù)庫模型發(fā)生改變時(shí)刪除當(dāng)前數(shù)據(jù)庫重建新數(shù)據(jù)庫的設(shè)置。

staticPortalContext()

{

Database.SetInitializer(null);

}

1>、在程序包管理器控制臺(tái),執(zhí)行語句:

PM> Enable-Migrations -EnableAutomaticMigrations

執(zhí)行成功后,Portal控制臺(tái)應(yīng)用程序代碼結(jié)構(gòu)中,添加Migrations文件夾,并生成類文件Configuration.cs。

namespacePortal.Migrations

{usingSystem;usingSystem.Data.Entity;usingSystem.Data.Entity.Migrations;usingSystem.Linq;internal sealed class Configuration : DbMigrationsConfiguration{publicConfiguration()

{

AutomaticMigrationsEnabled= true;

}protected override voidSeed(Portal.PortalContext context)

{//This method will be called after migrating to the latest version.//You can use the DbSet.AddOrUpdate() helper extension method//to avoid creating duplicate seed data. E.g.//

//context.People.AddOrUpdate(//p => p.FullName,//new Person { FullName = "Andrew Peters" },//new Person { FullName = "Brice Lambson" },//new Person { FullName = "Rowan Miller" }//);//}

}

}

2>、在程序包管理器控制臺(tái),執(zhí)行語句:

PM> Add-Migration InitialCreate

執(zhí)行成功后,在Migrations文件夾中新增類文件201309201556388_InitialCreate.cs

3>、在程序包管理器控制臺(tái),執(zhí)行語句:

PM> Update-Database -Verbose

執(zhí)行結(jié)果生成與上面一致的數(shù)據(jù)庫

4>、在數(shù)據(jù)庫模型中添加City類,執(zhí)行程序包管理器控制臺(tái)語句,Migrations文件夾中新增類文件201309201643300_AddCity.cs。

PM> Add-Migration AddCity

再次執(zhí)行程序包管理器控制臺(tái)語句

PM> Update-Database -Verbose

Portal控制臺(tái)應(yīng)用程序的代碼結(jié)構(gòu):

數(shù)據(jù)庫更新成功之后,在數(shù)據(jù)庫中新增表City。

2.2、版本回溯

修改數(shù)據(jù)庫中表City,刪除其中字段ProvinceNo。在程序包管理器控制臺(tái)中執(zhí)行以下兩條語句:

PM> Add-Migration ModifyCity

PM> Update-Database -Verbose

執(zhí)行成功之后,City表結(jié)構(gòu)修改為:

執(zhí)行程序包管理器控制臺(tái)語句,進(jìn)行數(shù)據(jù)庫版本回溯。

PM> Update-Database –TargetMigration:"201309201643300_AddCity.cs"

2.3、生成數(shù)據(jù)庫版本之間的Sql腳本

執(zhí)行程序包管理器控制臺(tái)語句,生成數(shù)據(jù)庫版本之間的Sql腳本。該操作僅為生成Sql語句,并未在數(shù)據(jù)庫中進(jìn)行執(zhí)行。

Update-Database -Script -SourceMigration:"201309201643300_AddCity.cs" -TargetMigration:"201309201708043_ModifyCity.cs"

其中-TargetMigration在未指定的情況,默認(rèn)為遷移到最新的版本。

3、EF Code First Migrations語句的其他參數(shù)

1>、為指定的DbContext啟用數(shù)據(jù)庫遷移

PM> Enable-Migrations -ContextTypeName Portal.PortalContext

2>、設(shè)置是否允許自動(dòng)遷移

Enable-Migrations

生成的Configuration.cs類文件的構(gòu)造函數(shù)

publicConfiguration()

{

AutomaticMigrationsEnabled= false;

}

3>、Enable-Migrations指定項(xiàng)目名稱

PM> Enable-Migrations -StartUpProjectName Portal

如果在“Package Manager Console”中選擇了默認(rèn)項(xiàng)目可以不設(shè)置“-StartUpProjectName”參數(shù);如果多次執(zhí)行此命令可以添加-Force參數(shù)。

4>、查看所執(zhí)行的Sql語句 -Verbose指令

Update-Database -Verbose

4、代碼下載

5、參考資料

總結(jié)

以上是生活随笔為你收集整理的EF mysql 数据迁移_EF Code First Migrations数据库迁移的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。