EFCodeFirst Migrations数据库迁移

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.  
  8. internal sealed class Configuration : DbMigrationsConfiguration<Portal.PortalContext> 
  9. { 
  10. public Configuration() 
  11. { 
  12. AutomaticMigrationsEnabled = true; 
  13. } 
  14.  
  15. protected override void Seed(Portal.PortalContext context) 
  16. { 
  17. // This method will be called after migrating to the latest version. 
  18.  
  19. // You can use the DbSet<T>.AddOrUpdate() helper extension method  
  20. // to avoid creating duplicate seed data. E.g. 
  21. // 
  22. // context.People.AddOrUpdate( 
  23. // p => p.FullName, 
  24. // new Person { FullName = "Andrew Peters" }, 
  25. // new Person { FullName = "Brice Lambson" }, 
  26. // new Person { FullName = "Rowan Miller" } 
  27. // ); 
  28. // 
  29. } 
  30. } 
  31. } 
  • 在程序包管理器控制台,执行语句:
  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  
posted @ 2017-06-23 17:48  明明.如月  阅读(201)  评论(0)    收藏  举报