我正在使用Web部署首先使用EF5代码部署MVC4应用程序。我创建了一个名为“development”的发布配置文件,它使用“执行代码优先迁移”复选框对应用程序和数据库进行Web部署,以便在应用程序启动时运行迁移。出版工作有一段时间了。在某些时候,我添加了一个名为“test”的新发布配置文件,以部署到另一台服务器,该服务器使用部署的ftp方法而不进行自动迁移。这也很好。但是,当我再次尝试使用旧的“开发”发布配置文件时,VS会自动将设置更改为dbDacFx方式(“更新数据库”复选框而不是“执行代码优先迁移”),我无法将其恢复为它的方式。 在使用“测试”配置文件时,项目还有一些其他更改,但在我看来,没有什么能够导致这种情况。有谁知道为什么VS认为我的项目不再使用代码了?
答案 0 :(得分:10)
自从提出这个问题以来,我已经在多个版本的MVC和EF中多次遇到这个问题(所有代码首先通过cource)。如果发生这种情况,请不要将更改保存到发布配置文件,请确保您使用的是“调试”构建配置,清洁解决方案和重建解决方案。如果一切都失败了,请重新启动Visual Studio并重试。 到目前为止,这一直是我解决问题的方法。
答案 1 :(得分:4)
这是正确的answer - 解决了我的问题。 只需将您的连接字符串重命名为DbContext,例如
public ApplicationDbContext()
: base("Vocabulary.Domain.ApplicationDbContext", throwIfV1Schema: false)
{
}
请注意,名称应包含名称空间,如“Vocabulary.Domain.ApplicationDbContext”。 不要忘记更新.pubxml文件:
<ObjectGroup Name="Vocabulary.Domain.ApplicationDbContext" Order="1" Enabled="True">
此article描述了发布对话框何时或没有勾选“执行代码优先迁移(在应用程序启动时运行)”
答案 2 :(得分:1)
这在VS2013中发生在我身上。既不清洁解决方案,也不重新启动它。我试图“重新启用”迁移并且它有效。即使我收到项目中已启用迁移的错误消息,也会再次出现“执行代码优先迁移”复选框。
答案 3 :(得分:0)
由于上述任何内容都没有起作用
我从azure下载了publish profile
,它第一次完美无缺地工作
答案 4 :(得分:0)
我遇到了这个问题,对我来说,它与我在其他地方发现的任何事情都有不同的原因。
我的应用程序分布在解决方案中的许多项目中。当我使用接口和单独的View / Presentation模型来包装对数据库的调用时,我的前端Web项目没有直接引用包含DbContext类的项目。请注意,这对我在本地运行站点没有任何问题。我这样做是为了让前端Web项目中的开发人员不想绕过Presentation层并更直接地访问数据库。
添加此引用会立即解决问题,现在我看到了“执行代码优先迁移”#39;我的“发布配置文件”对话框中的复选框。
答案 5 :(得分:0)
只是添加到组合中,不要调用您的连接类DbConn
似乎并不喜欢。