Entity Framework 数据库迁移
今天谈一下Entity framework code first开发模式下数据库迁移的问题。这里有个小tip要说一下,EF在使用 update-database 时候,使用的连接字符串来自于解决方案中的“启动项目”,而不是你在包管理器中选择的“默认项目”。
一、Entity Framework迁移命令
Enable-Migrations 启用迁移
Add-Migration 为挂起的Model变化添加迁移脚本
Update-Database 将挂起的迁移更新到数据库
Get-Migrations 获取已经应用的迁移
二、自定义迁移
1、Enable-Migrations
在Package Manager Console中执行Enable-Migrations启动迁移
可以执行get-help Enable-Migrations -detailed查看Enable-Migrations的详细用法。
- -ContextTypeName 指定要使用的Context
- -EnableAutomaticMigrations 启动自动迁移
- -ProjectName 指定搭建的迁移类添加到的项目
- -StartUpProjectName 指定使用的配置文件所在的项目
- -ConnectionStringName 指定使用配置文件中连接字符串的名称
- -ConnectionString 指定使用的连接字符串
- -ConnectionProviderName 指定连接字符串的provider名称
- -Force 重写迁移配置
执行结果:检测到数据库是由database initializer创建,为现有的数据库搭建初始化迁移脚本。

在项目文件下自动创建Migrations文件夹。在该文件夹下自动生成Configuration.cs文件。如果事前已经通过code first方式创建了数据库,则会生成InitialCreate 迁移,出现一个后缀有InitialCreate 的类文件。如果尚未创建数据库,则不会将此InitialCreate迁移添加到项目中。而是,首次调用 Add-Migration 时,用于创建这些表的代码将为新迁移搭建基架。
2. Add-Migration
在Package Manager Console中执行Add-Migration搭建挂起的Model变化迁移脚本。
执行get-help Add-Migration –detailed查看Add-Migration的详细用法。
- -Name 指定自定义脚本的名称
- -Force
- -ProjectName
- -StartUpProjectName
- -ConfigurationTypeName 指定使用的迁移配置
- -IgnoreChanges 忽略检测到挂起的model改变,创建一个空的迁移。这个选项可用来为已有的数据库启用迁移创建一个初始的,空的迁移。
- -ConnectionStringName 指定使用配置文件中连接字符串的名称
- -ConnectionString 指定使用的连接字符串
- -ConnectionProviderName 指定连接字符串的provider名称
3. Update-Database
执行get-help Update-Database -detailed查看Add-Migration的详细用法。
- –SourceMigration 只有-Script打开时才有效。指定迁移的名称用作更新的起点。忽略则使用最后一次应用的迁移。
- -TargetMigration 指定将数据库更新到哪个迁移的名称。
- -Script 生成SQL脚本
- -Force
- -ProjectName
- -StartProjectName
- – ConfigurationTypeName
- -ConnectionStringName 指定使用配置文件中连接字符串的名称
- -ConnectionString 指定使用的连接字符串
- -ConnectionProviderName 指定连接字符串的provider名称

浙公网安备 33010602011771号