ASP.NET上发布的ASP.NET WebAPI应用程序,首先是实体框架代码。
在应用程序启动(第一张图片)上执行迁移后发布后,我无法添加新的迁移并使用数据库上下文(“自创建数据库以来,”支持'DatabaseContext'上下文的模型已更改“异常)。添加新的迁移EF中断时出错:
由于以下显式迁移未决,因此无法生成显式迁移:[迁移名称]。在尝试生成新的显式迁移之前应用挂起的显式迁移。
看起来EF看不到__MigrationHistory表的迁移。我检查了这个表,最后一次迁移存在。
在web.config中只有一个连接字符串。
如果它很重要,DatabaseContextWithoutCache继承DatabaseContext(它们有不同的DbConfigurationType)。
将null初始化程序Database.SetInitializer<DatabaseContext>(null);
添加到数据库上下文后,它可以工作,但我仍然无法添加任何迁移。
为什么Entity Framework没有看到迁移已经附加到数据库? update-database
因为db中已有表和列而中断。
修改
在我的迁移列表中2迁移。我回滚到init(第一次)迁移并删除第二次。然后添加迁移(现在它包含第二次和新更改的更改)并运行update-database
。有用。
但EF忽略了db是最新的,并且“自创建数据库以来,”支持'DatabaseContext'上下文的模型已经改变了“异常。
我不理解答案 0 :(得分:0)
我最近在VS 2013下遇到过这个问题。如果在软件包管理器控制台中运行命令add-migration {name}
(可选择添加-startupprojectname {MyProjectName}
),EF应该为您生成一个新的迁移文件。如果该迁移文件包含任何内容,那么它认为您不应该在哪里,然后应该运行update-database
新迁移。
不幸的是,似乎有可能陷入这种环境(它发生在我身上)并且有很多SO Q&amp; As关注这一点。非常幸运的解决它。
答案 1 :(得分:0)
正如错误所示,存在针对数据库的迁移。
使用包管理器中的以下命令(用您自己的值替换值)
update-database -projectname yourprojectname -connectionstring "yourconnectionstring"
然后,创建新的迁移....
add-migration yournewmigrationname -projectname yourprojectname -connectionstring "yourconnectionstring"
最后,运行新创建的迁移
update-database -projectname yourprojectname -connectionstring "yourconnectionstring"