Nuget 启用数据库迁移的时候一定要把包含DbContext的项目设为启动项目
在為項目啟用數據庫遷移的時候(enable-migrations)出現如下錯誤:
在程序集“XX”中未找到遷移配置類型“XX.Migrations.Configuration”
之前一直正確的,并沒有修改項目中的代碼,花了小半天找原因,stackoverflow和一些國外的網站都有類似錯誤,但是我這個不是
http://www.ideablade.com/forum/forum_posts.asp?TID=3611&title=code-first-migration
http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/39edecbf-267d-4e88-bad9-87c60f330d8a
這篇文章中說要在Nuget控制臺中選擇正確的項目,我也選擇了正確的項目,但是還是繼續出現錯誤。
我嘗試修改DbContext的命名空間,再次運行enable-migrations,令人不解的現象出現了,自動生成的遷移配置文件中的DbContext類的命名空間并沒有發生變化,還是原來的命名空間,看來enable-migrations并沒有使用當前我選擇的項目的最新生成的程序集,查找了硬盤上所有該項目生成的程序集,發現新加入到解決方案的一個web項目(該web項目設置為啟動項目)文件夾下的包含DbContext程序集的日期是比較老的日期,就是還沒有啟用數據庫遷移的版本。到這里明白了enable-migrations是從啟動項目里面去找包含DbContext的程序集的……
?
我新加入一個web項目,理所當然把它設置成了啟動項目,enable-migrations執行的時候會先編譯,這個時候我的DbContext程序集里面還沒有遷移配置的任何代碼,編譯之后會在包含DbContext這個項目里面添加遷移配置代碼,但是這個時候web項目引用的那個程序集里面還是沒有遷移配置的任何代碼,所以出現了上面的錯誤。
?
把啟動項設置成包含DbContext的項目,問題解決。
?
NuGet的enable-migrations為什么會找啟動項目,而不是用我在nuget控制臺中選擇的項目呢?
轉載于:https://www.cnblogs.com/tubo/archive/2012/10/05/2712081.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Nuget 启用数据库迁移的时候一定要把包含DbContext的项目设为启动项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【项目经验】如何用TexturePack
- 下一篇: 在Access中执行SQL语句