關於Oracle中使用Entity Framework 6.x Code-First方式開發,請參考博客(菩提樹下的楊過)https://www.cnblogs.com/yjmyzz/p/how-to-use-code-first-in-oracle-with-entity-framework-6. ...
關於Oracle中使用Entity Framework 6.x Code-First方式開發,請參考博客(菩提樹下的楊過)https://www.cnblogs.com/yjmyzz/p/how-to-use-code-first-in-oracle-with-entity-framework-6.html的具體介紹,裡面關於使用Entity Framework進行Code-First開發以及創建Database Migration有詳細的講解以及官方參考的連接。這裡就不贅述了。
使用EntityframeWork的CodeFirst來寫程式的時候,會經常遇到需要修改實體內容(即表中的欄位的內容),這個時候就需要用到Database Migration,但是在實際過程中難免會碰到一些問題,這裡記錄幾個我遇到的問題,以及解決的方法。
1、關於創建和使用Migration,本文中連接參考的文章已經有了,這裡總結一下幾個使用命令。
工具(Tools)-->程式包管理器(Package Manager)-->程式包管理器控制台(Package Manager Console),1)Enable-Migrations;2)Add-Migration MigrationName;3)Update-Migration。
2、Update-Migration出錯。
Update-Migration有時候會出錯,出錯的原因有很多,原因可能是配置問題,可能是資料庫原因,以及其他原因,這個時候如果又找不到解決的方法,這個時候重新生成實體對應的表或者實體屬性對應的表的欄位,是無可奈何的一種下策。比如我在實際開發中遇到將沒有添加[Attribute]的string類型屬性添加[MaxLength]Attribute之後,生成Migration,怎麼都通不過Update-Migration。無奈只好先刪除舊的屬性,再添加上去。就可以了。
3、Add-Migration出錯。
Add-Migration出錯一般容易報錯的是“Unable to generate an explicit migration because the following explicit migrations are pending:[MigrationName].Apply the pending explicit migrations before attenpting to generate a new explicit migration”。這個錯誤是因為前面有一個新建(New Add-Migration Command)的Migration沒有被執行(Update-Migration),處於聽命(pending)的狀態,只要先運行命令將這個migration執行了就解除pending狀態了。一般都是由於update-migration執行不了才會導致後面的add-migration無法繼續。這裡可以先將之前的Migration裡面的“public override void up()”方法裡面的代碼註釋了在執行Update-Migration命令,這樣不會對資料庫有實際操作,也解除了pending狀態。然後就可以添加新的Migration了。