EFCodeFirst Migrations數據庫遷移
阿新 • • 發佈:2017-06-23
contain startup eset text -i extension pen msu tar
EFCodeFirst Migrations數據庫遷移
數據庫遷移1.生成數據庫
- 修改類文件PortalContext.cs的靜態構造函數,取消當數據庫模型發生改變時刪除當前數據庫重建新數據庫的設置。
- static PortalContext()
- {
- Database.SetInitializer<PortalContext>(null);
- }
- 添加Migrations文件夾,並生成類文件Configuration.cs。
- namespace Portal.Migrations
- {
- using System;
- using System.Data.Entity;
- using System.Data.Entity.Migrations;
- using System.Linq;
-
- internal sealed class Configuration : DbMigrationsConfiguration<Portal.PortalContext>
- {
- public Configuration()
- {
- AutomaticMigrationsEnabled = true;
- }
-
- protected override void Seed
- {
- // This method will be called after migrating to the latest version.
-
- // You can use the DbSet<T>.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" }
- // );
- //
- }
- }
- }
- 在程序包管理器控制臺,執行語句:
- PM> Update-Database -Verbose
- 在數據庫模型中添加City類,執行程序包管理器控制臺語句,Migrations文件夾中新增類文件
- PM> Add-Migration AddCity
- 版本回溯,修改數據庫中表City,刪除其中字段ProvinceNo。在程序包管理器控制臺中執行以下兩條語句:
- PM> Update-Database -Verbose
- //版本回溯
- PM> Update-Database –TargetMigration:"201309201643300_AddCity.cs"
- 生成數據庫版本之間的Sql腳本,只生成,不執行
- Update-Database -Script -SourceMigration:"201309201643300_AddCity.cs" -TargetMigration:"201309201708043_ModifyCity.cs"
2.EF Code First Migrations語句的其他參數
為指定的DbContext啟用數據庫遷移
- PM> Enable-Migrations -ContextTypeName Portal.PortalContext
設置是否允許自動遷移
- Enable-Migrations
生成的Configuration.cs類文件的構造函數
- public Configuration()
- {
- AutomaticMigrationsEnabled = false;
- }
Enable-Migrations指定項目名稱
- PM> Enable-Migrations -StartUpProjectName Portal
如果在“Package Manager Console”中選擇了默認項目可以不設置“-StartUpProjectName”參數;如果多次執行此命令可以添加-Force參數。
查看所執行的Sql語句 -Verbose指令
- Update-Database -Verbose
EFCodeFirst Migrations數據庫遷移