1. 程式人生 > >EFCodeFirst Migrations數據庫遷移

EFCodeFirst Migrations數據庫遷移

contain startup eset text -i extension pen msu tar

EFCodeFirst Migrations數據庫遷移

數據庫遷移

1.生成數據庫

  • 修改類文件PortalContext.cs的靜態構造函數,取消當數據庫模型發生改變時刪除當前數據庫重建新數據庫的設置。
  1. static PortalContext()
  2. {
  3. Database.SetInitializer<PortalContext>(null);
  4. }
  • 添加Migrations文件夾,並生成類文件Configuration.cs。
  1. namespace Portal.Migrations
  2. {
  3. using System;
  4. using System.Data.Entity;
  5. using System.Data.Entity.Migrations;
  6. using System.Linq;

  7. internal sealed class Configuration : DbMigrationsConfiguration<Portal.PortalContext>
  8. {
  9. public Configuration()
  10. {
  11. AutomaticMigrationsEnabled = true;
  12. }

  13. protected override void Seed
    (Portal.PortalContext context)

  14. {
  15. // This method will be called after migrating to the latest version.

  16. // You can use the DbSet<T>.AddOrUpdate() helper extension method
  17. // to avoid creating duplicate seed data. E.g.
  18. //
  19. // context.People.AddOrUpdate(

  20. // p => p.FullName,
  21. // new Person { FullName = "Andrew Peters" },
  22. // new Person { FullName = "Brice Lambson" },
  23. // new Person { FullName = "Rowan Miller" }
  24. // );
  25. //
  26. }
  27. }
  28. }
  • 在程序包管理器控制臺,執行語句:
  1. PM> Update-Database -Verbose
  • 在數據庫模型中添加City類,執行程序包管理器控制臺語句,Migrations文件夾中新增類文件
  1. PM> Add-Migration AddCity
  • 版本回溯,修改數據庫中表City,刪除其中字段ProvinceNo。在程序包管理器控制臺中執行以下兩條語句:
  1. PM> Update-Database -Verbose
  2. //版本回溯
  3. PM> Update-Database –TargetMigration:"201309201643300_AddCity.cs"
  • 生成數據庫版本之間的Sql腳本,只生成,不執行
  1. Update-Database -Script -SourceMigration:"201309201643300_AddCity.cs" -TargetMigration:"201309201708043_ModifyCity.cs"

2.EF Code First Migrations語句的其他參數

為指定的DbContext啟用數據庫遷移

  1. PM> Enable-Migrations -ContextTypeName Portal.PortalContext

設置是否允許自動遷移

  1. Enable-Migrations

生成的Configuration.cs類文件的構造函數

  1. public Configuration()
  2. {
  3. AutomaticMigrationsEnabled = false;
  4. }

Enable-Migrations指定項目名稱

  1. PM> Enable-Migrations -StartUpProjectName Portal

如果在“Package Manager Console”中選擇了默認項目可以不設置“-StartUpProjectName”參數;如果多次執行此命令可以添加-Force參數。

查看所執行的Sql語句 -Verbose指令

  1. Update-Database -Verbose

EFCodeFirst Migrations數據庫遷移