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名称

 

 

posted @ 2016-12-16 19:40  danqiubore  阅读(146)  评论(0)    收藏  举报