EF6學習筆記七:代碼遷移


要專業系統地學習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 -script -sourceMigration 201901070409494_jinshantest7 -verbose
這樣做就可以講已經應用到數據庫的遷移,生成的SQL語句給你在VS中一個新的Tab頁顯示出來,像這樣

使用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

https://www.cnblogs.com/IIXS/p/11249379.html


免責聲明!

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



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