EF Code-First(Oracle)通過Migration來更新數據庫的表的字段


關於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(這里好像之前寫錯了,應該是:Update-Database)

2、Update-Migration(這里好像之前寫錯了,應該是:Update-Database)出錯。

Update-Migration(這里好像之前寫錯了,應該是:Update-Database)有時候會出錯,出錯的原因有很多,原因可能是配置問題,可能是數據庫原因,以及其他原因,這個時候如果又找不到解決的方法,這個時候重新生成實體對應的表或者實體屬性對應的表的字段,是無可奈何的一種下策。比如我在實際開發中遇到將沒有添加[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了。

附加(修改時間:2017年12月19日09:56)

使用AutomaticMigrationsEnabled = true(將Migrations文件夾下的Configurations.cs里面的設置改下就可以了)  這樣以后更新數據庫的時候只需要輸入Update-Database就可以了,不用Add-Migration了。

 

 


免責聲明!

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



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