日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EF迁移命令

發(fā)布時(shí)間:2024/9/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EF迁移命令 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

EF遷移設(shè)置的最后一步是在包管理器控制臺(tái)中輸入命令“add-migration InitialMigration -IgnoreChanges”。“InitialMigration”(高亮的黃色)是您想要給當(dāng)前遷移的名稱,“IgnoreChanges”句柄是告訴EF Migrations您想要忽略當(dāng)前數(shù)據(jù)庫:這意味著您希望EF忽略所有現(xiàn)有表,以便不會(huì)為現(xiàn)有表生成腳本。

enable-migrations

update-database

獲取遷移的腳本

在運(yùn)行 Update-Database 的時(shí)候,使用參數(shù) -Script 。

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

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?生成已有數(shù)據(jù)庫初始化代碼

2.update-database -verbose 升級(jí)數(shù)據(jù)庫并顯示sql語句

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

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

5.context的靜態(tài)構(gòu)造函數(shù)中可以設(shè)置數(shù)據(jù)庫初始化器(用于調(diào)試)

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

6.Get-Migrations?獲取已經(jīng)應(yīng)用的遷移

7.Enable-Migrations

在Package Manager Console中執(zhí)行Enable-Migrations啟動(dòng)遷移。

執(zhí)行g(shù)et-help Enable-Migrations –detailed?查看Enable-Migrations的詳細(xì)用法。

-ContextTypeName 指定要使用的Context

-EnableAutomaticMigrations 啟動(dòng)自動(dòng)遷移

-ProjectName 指定搭建的遷移類添加到的項(xiàng)目

-StartUpProjectName 指定使用的配置文件所在的項(xiàng)目

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

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

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

8.Add-Migration

在Package Manager Console中執(zhí)行Add-Migration搭建掛起的Model變化遷移腳本。

執(zhí)行g(shù)et-help Add-Migration –detailed查看Add-Migration的詳細(xì)用法。

-Name 指定自定義腳本的名稱

-Force

-ProjectName

-StartUpProjectName

-ConfigurationTypeName 指定使用的遷移配置

-IgnoreChanges 忽略檢測到掛起的model改變,創(chuàng)建一個(gè)空的遷移。這個(gè)選項(xiàng)可用來為已有的數(shù)據(jù)庫啟用遷移創(chuàng)建一個(gè)初始的,空的遷移。

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

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

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

9.Update-Database

在Package Manager Console中執(zhí)行Update-Database將掛起的遷移更新到數(shù)據(jù)庫。

執(zhí)行g(shù)et-help Update-Database -detailed查看Add-Migration的詳細(xì)用法。

-SourceMigration?只有-Script打開時(shí)才有效。指定遷移的名稱用作更新的起點(diǎn)。忽略則使用最后一次應(yīng)用的遷移。

-TargetMigration 指定將數(shù)據(jù)庫更新到哪個(gè)遷移的名稱。

-Script 生成SQL腳本

-Force

-ProjectName

-StartProjectName

- ConfigurationTypeName

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

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

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

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

?

?

?

?

?

Context構(gòu)造函數(shù)
不檢查__MigrationHistory 取消當(dāng)數(shù)據(jù)庫模型發(fā)生改變時(shí)刪除當(dāng)前數(shù)據(jù)庫重建新數(shù)據(jù)庫的設(shè)置。
Database.SetInitializer<Context>(null);
重新創(chuàng)建數(shù)據(jù)庫
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>());?
重建數(shù)據(jù)庫運(yùn)行,生產(chǎn)環(huán)境此法嚴(yán)禁使用。


遷移方法1:
AutomaticMigrationsEnabled=true;自動(dòng)遷移
Enable-Migrations 啟用遷移
Add-Migration 為掛起的Model變化添加遷移腳本
Update-Database 將掛起的遷移更新到數(shù)據(jù)庫
Update-Database -Verbose 將模型更新到數(shù)據(jù)庫中并顯示更新腳本,將更新腳本復(fù)制下來在生產(chǎn)環(huán)境中運(yùn)行
Get-Migrations 獲取已經(jīng)應(yīng)用的遷移


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


遷移方法2:
生產(chǎn)環(huán)境中__MigrationHistory表刪除,將生產(chǎn)環(huán)境中的表與模型更新成一致。

總結(jié)

以上是生活随笔為你收集整理的EF迁移命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。