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

EPL*_*ens 13 asp.net-mvc-4 ef-migrations entity-framework-5

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

EPL*_*ens 10

自从提出这个问题以来,我已经在多个版本的MVC和EF中多次遇到这个问题(所有代码首先通过cource).如果发生这种情况,请不要将更改保存到发布配置文件,请确保您使用的是"调试"构建配置,清洁解决方案和重建解决方案.如果一切都失败了,请重新启动Visual Studio并重试.到目前为止,这一直是我解决问题的方法.

  • 是的,它也发生在我身上好几次.现在(在我升级到VS2013之后),无论我重启VS多少次,它都不会显示"执行代码优先迁移". (2认同)

小智 5

这是正确的答案- 为我解决了问题。只需将您的连接字符串重命名为您的 DbContext,例如

        public ApplicationDbContext()
        : base("Vocabulary.Domain.ApplicationDbContext", throwIfV1Schema: false)
    {
    }
Run Code Online (Sandbox Code Playgroud)

请注意,名称应包括名称空间,如“Vocabulary.Domain.ApplicationDbContext”。不要忘记更新 .pubxml 文件:

    <ObjectGroup Name="Vocabulary.Domain.ApplicationDbContext" Order="1" Enabled="True">
Run Code Online (Sandbox Code Playgroud)

文章介绍了在发布对话框中有或无蜱“执行代码首先迁移(在应用程序启动运行)”