要專業系統地學習EF前往《你必須掌握的Entity Framework 6.x與Core 2.0》這本書的作者(汪鵬,Jeffcky)的博客:https://www.cnblogs.com/CreateMyself/
這里主要記錄一下我常用的幾個遷移,還要其他的很多命令,我不去弄了
常用的就四個
Enable-Migrations:在項目中啟用代碼遷移
Add-Migration 對已掛起模型改變搭建基架,在添加遷移的時候,EF要做這幾步
1.實體框架審查映射的解決方案中的模型
2.實體框架檢查解決方案中的現有遷移,並確定自上次遷移以來所做的更改
3.構建更改的“腳本”,實體框架將更改“腳本”添加到遷移文件中
4.遷移文件以時間戳和更改的簡要命名說明
Update-Database 通過add-migrations命令將掛起的模型遷移應用到數據庫中並保持模型同步
Get-Migrations:顯示已經應用到數據庫的遷移
我在用數據遷移碰到的一些問題
數據庫中表的改動,比如要刪除某張表,可能應為依賴的關系刪除不了,我無法再通過代碼遷移去更新,只能手動去數據庫修改
所以用數據遷移我的經驗是,對於變動太大的模型,我會事先仔細想清楚,實體之間是什么關系要確定好,這也應該是我對數據遷移不太熟悉
還有就是我添加遷移,生成了一個遷移文件,還沒有更新遷移,然后我對數據模型做了更改,然后我再添加遷移,就會報錯
Unable to generate an explicit migration because the following explicit migrations are pending: [201901140747272_jinshantest1]. Apply the pending explicit migrations before attempting to generate a new explicit migration.
在嘗試生成新的顯式遷移之前,應用掛起的顯式遷移。意思就是只能有一個遷移被掛起來,那我的做法,就是將我剛剛生成的那個遷移文件刪掉,重新生成遷移。
通常我在用update-database指令時會用到-verbose,這個可以打印詳細信息,得到EF生成的SQL語句,當然還可以這樣

使用update-database命令遷移的時候,如果參數都不給,默認就是遷移當前掛起的遷移文件,可以指定它遷移到指定的版本
update-database -targetMigration jinshantest1
對於EF的遷移我們要記住以下三點
1、Entity Framework 實體框架使用_MigrationHistory表來追蹤應用於數據庫的更改
2、Entity Framework 實體框架創建項目中當前模型狀態的哈希值,並將其與_MigrationHistroy表中的模型狀態存儲進行比較,以確定數據庫是否為當前狀態
3、進行遷移時,始終按照時間戳(升序)的順序同步到數據庫
尋求系統幫助
如果你對某一個指令不太了解,可以輸入命令了解詳細信息
若要查看示例,請鍵入:get-help enable-migrations -examples
有關詳細信息,請鍵入:get-help enable-migrations -defailed
若要獲取技術信息,請鍵入:get-help enable-migrations -full
其他命令
cls 清屏,這和fildder一樣
后續更新
EF Core 查看指定遷移文件生成的Sql語句
Script-Migration -From 0 -To updateRecomputeTableName -Context HKERPInventoryHubDbContext