EF遷移命令


EF遷移設置的最后一步是在包管理器控制台中輸入命令“add-migration InitialMigration -IgnoreChanges”。“InitialMigration”(高亮的黃色)是您想要給當前遷移的名稱,“IgnoreChanges”句柄是告訴EF Migrations您想要忽略當前數據庫:這意味着您希望EF忽略所有現有表,以便不會為現有表生成腳本。

enable-migrations

update-database

獲取遷移的腳本

在運行 Update-Database 的時候,使用參數 -Script 。

-SourceMigration:$InitialDatabase 用來指定起始的版本, -TargetMigration:"AddPostAbstract" 用來指定目標版本。

Update-Database to bring the database up-to-date. This time let’s specify the –Verbose flag so that you can see the SQL that Code First Migrations is running.

https://msdn.microsoft.com/en-us/data/jj591621.aspx#script

1.Add-Migration Initia-IgnoreChanges 生成已有數據庫初始化代碼

2.update-database -verbose 升級數據庫並顯示sql語句

3.Update-Database -Script -SourceMigration:"201309201643300_AddCity.cs" -TargetMigration:"201309201708043_ModifyCity.cs"  這個是生成兩次遷移的sql語句,TargetMigration省略是到最新

4.simplemembership的數據庫沒有migration表 所以遷移的時候如果丟失了遷移類會很麻煩,建議手工修改即可。

5.context的靜態構造函數中可以設置數據庫初始化器(用於調試)

1
2
3
4
5
6
7
8
9
10
static PortalContext()
{
     Database.SetInitializer<PortalContext>( null );
 
 
//DropCreateDatabaseIfModelChanges
//CreateDatabaseIfNotExists
//DropCreateDatabaseAlways
//MigrateDatabaseToLatestVersion
}

6.Get-Migrations 獲取已經應用的遷移

7.Enable-Migrations

在Package Manager Console中執行Enable-Migrations啟動遷移。

執行get-help Enable-Migrations –detailed 查看Enable-Migrations的詳細用法。

-ContextTypeName 指定要使用的Context

-EnableAutomaticMigrations 啟動自動遷移

-ProjectName 指定搭建的遷移類添加到的項目

-StartUpProjectName 指定使用的配置文件所在的項目

-ConnectionStringName 指定使用配置文件中連接字符串的名稱

-ConnectionString 指定使用的連接字符串

-ConnectionProviderName 指定連接字符串的provider名稱

8.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名稱

9.Update-Database

在Package Manager Console中執行Update-Database將掛起的遷移更新到數據庫。

執行get-help Update-Database -detailed查看Add-Migration的詳細用法。

-SourceMigration 只有-Script打開時才有效。指定遷移的名稱用作更新的起點。忽略則使用最后一次應用的遷移。

-TargetMigration 指定將數據庫更新到哪個遷移的名稱。

-Script 生成SQL腳本

-Force

-ProjectName

-StartProjectName

- ConfigurationTypeName

-ConnectionStringName 指定使用配置文件中連接字符串的名稱

-ConnectionString 指定使用的連接字符串

-ConnectionProviderName 指定連接字符串的provider名稱

 http://blog.csdn.net/foren_whb/article/details/45576853

 

 

 

 

 

Context構造函數
不檢查__MigrationHistory 取消當數據庫模型發生改變時刪除當前數據庫重建新數據庫的設置。
Database.SetInitializer<Context>(null);
重新創建數據庫
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>()); 
重建數據庫運行,生產環境此法嚴禁使用。


遷移方法1:
AutomaticMigrationsEnabled=true;自動遷移
Enable-Migrations 啟用遷移
Add-Migration 為掛起的Model變化添加遷移腳本
Update-Database 將掛起的遷移更新到數據庫
Update-Database -Verbose 將模型更新到數據庫中並顯示更新腳本,將更新腳本復制下來在生產環境中運行
Get-Migrations 獲取已經應用的遷移


AutomaticMigrationsEnabled=false;非自動遷移
Enable-Migrations [-ContextTypeName <String>] [-EnableAutomaticMigrations] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConnectionStringName <String>] [-Force] [<CommonParameters>]
ContextTypeName:項目繼承自DBContext的類名字。
EnableAutomaticMigrations:開啟自動遷移。
ProjectName:存放DBContext類的項目名稱。
StartUpProjectName:解決方案中啟動項目的名稱,作用是調用該項目下的連接字符串。
ConnectionStringName:連接字符串名稱
上面五個參數是解決問題必須的,其它的無關緊要。
例如:
Enable-Migrations -ContextTypeName "MVCCodeFirst.BlogEntities" -ProjectName "MVCCodeFirst" -StartUpProjectName "MVCCodeFirst" -ConnectionStringName "BlogEntities" -Verbose
依次填好之后,問題解決。
同樣的在Add-Migration、Update-Database的時候也需要填寫相應的參數。否則會出現同樣錯誤。
例如:
Add-Migration -Name "EditCST_DevicePhoto"  -ProjectName "DBAccessLib" -StartUpProjectName "WebSite" -ConnectionStringName "TJSSDBContext" -Verbose
Update-Database -Script -ProjectName "DBAccessLib" -StartUpProjectName "WebSite" -ConnectionStringName "TJSSDBContext"  -Verbose


遷移方法2:
生產環境中__MigrationHistory表刪除,將生產環境中的表與模型更新成一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM