Nuget 启用数据库迁移的时候一定要把包含DbContext的项目设为启动项目
在為項(xiàng)目啟用數(shù)據(jù)庫遷移的時(shí)候(enable-migrations)出現(xiàn)如下錯(cuò)誤:
在程序集“XX”中未找到遷移配置類型“XX.Migrations.Configuration”
之前一直正確的,并沒有修改項(xiàng)目中的代碼,花了小半天找原因,stackoverflow和一些國外的網(wǎng)站都有類似錯(cuò)誤,但是我這個(gè)不是
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控制臺(tái)中選擇正確的項(xiàng)目,我也選擇了正確的項(xiàng)目,但是還是繼續(xù)出現(xiàn)錯(cuò)誤。
我嘗試修改DbContext的命名空間,再次運(yùn)行enable-migrations,令人不解的現(xiàn)象出現(xiàn)了,自動(dòng)生成的遷移配置文件中的DbContext類的命名空間并沒有發(fā)生變化,還是原來的命名空間,看來enable-migrations并沒有使用當(dāng)前我選擇的項(xiàng)目的最新生成的程序集,查找了硬盤上所有該項(xiàng)目生成的程序集,發(fā)現(xiàn)新加入到解決方案的一個(gè)web項(xiàng)目(該web項(xiàng)目設(shè)置為啟動(dòng)項(xiàng)目)文件夾下的包含DbContext程序集的日期是比較老的日期,就是還沒有啟用數(shù)據(jù)庫遷移的版本。到這里明白了enable-migrations是從啟動(dòng)項(xiàng)目里面去找包含DbContext的程序集的……
?
我新加入一個(gè)web項(xiàng)目,理所當(dāng)然把它設(shè)置成了啟動(dòng)項(xiàng)目,enable-migrations執(zhí)行的時(shí)候會(huì)先編譯,這個(gè)時(shí)候我的DbContext程序集里面還沒有遷移配置的任何代碼,編譯之后會(huì)在包含DbContext這個(gè)項(xiàng)目里面添加遷移配置代碼,但是這個(gè)時(shí)候web項(xiàng)目引用的那個(gè)程序集里面還是沒有遷移配置的任何代碼,所以出現(xiàn)了上面的錯(cuò)誤。
?
把啟動(dòng)項(xiàng)設(shè)置成包含DbContext的項(xiàng)目,問題解決。
?
NuGet的enable-migrations為什么會(huì)找啟動(dòng)項(xiàng)目,而不是用我在nuget控制臺(tái)中選擇的項(xiàng)目呢?
轉(zhuǎn)載于:https://www.cnblogs.com/tubo/archive/2012/10/05/2712081.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Nuget 启用数据库迁移的时候一定要把包含DbContext的项目设为启动项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【项目经验】如何用TexturePack
- 下一篇: 在Access中执行SQL语句