“执行代码优先迁移”复选框从我的发布配置文件中消失

时间:2013-10-29 16:52:00

标签: asp.net-mvc-4 entity-framework-5 ef-migrations

我正在使用Web部署首先使用EF5代码部署MVC4应用程序。我创建了一个名为“development”的发布配置文件,它使用“执行代码优先迁移”复选框对应用程序和数据库进行Web部署,以便在应用程序启动时运行迁移。出版工作有一段时间了。在某些时候,我添加了一个名为“test”的新发布配置文件,以部署到另一台服务器,该服务器使用部署的ftp方法而不进行自动迁移。这也很好。但是,当我再次尝试使用旧的“开发”发布配置文件时,VS会自动将设置更改为dbDacFx方式(“更新数据库”复选框而不是“执行代码优先迁移”),我无法将其恢复为它的方式。 在使用“测试”配置文件时,项目还有一些其他更改,但在我看来,没有什么能够导致这种情况。有谁知道为什么VS认为我的项目不再使用代码了?

6 个答案:

答案 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似乎并不喜欢。