Home  >  Article  >  Database  >  Nuget 启用数据库迁移的时候一定要把包含DbContext的项目设为启

Nuget 启用数据库迁移的时候一定要把包含DbContext的项目设为启

WBOY
WBOYOriginal
2016-06-07 15:06:141361browse

在为项目启用数据库迁移的时候(enable-migrations)出现如下错误: 在程序集XX中未找到迁移配置类型XX.Migrations.Configuration 之前一直正确的,并没有修改项目中的代码,花了小半天找原因,stackoverflow和一些国外的网站都有类似错误,但是我这个不是 h

在为项目启用数据库迁移的时候(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控制台中选择的项目呢?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn