首页 > 代码库 > EFCodeFirst Migrations数据库迁移
EFCodeFirst Migrations数据库迁移
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(Portal.PortalContext context)
- {
- // 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数据库迁移
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。