如何说服Visual Studio Publish Web向导我的数据库是Entity Framework CodeFirst?

Dav*_*ray 9 entity-framework web-deployment ef-code-first azure-web-sites visual-studio-2015

在VS2015中,当我在发布向导中打开现有发布配置文件时,它会立即确定我的默认数据库不再是EF CodeFirst,并删除执行代码优先迁移的选项并将其替换为更新数据库.

不知何故,向导似乎决定这不再是CodeFirst项目,而是将其替换为DbDacFx,如下所示:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="DefaultConnection" Order="1" Enabled="True">
      <Destination Path="Data Source=*" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="m4d.Context.DanceMusicContext, m4d" MigrationConfiguration="m4d.Migrations.Configuration, m4d" Origin="Configuration" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>
Run Code Online (Sandbox Code Playgroud)

转换为:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
      <Destination Path="Data Source=*" />
      <Object Type="DbDacFx">
        <PreSource Path="Data Source=*" includeData="False" />
        <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
      </Object>
      <UpdateFrom Type="Web.Config">
        <Source MatchValue="Data Source=*" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
      </UpdateFrom>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>
Run Code Online (Sandbox Code Playgroud)

(我用*替换了各种连接字符串)

任何人都知道向导使用什么来决定这是CodeFirst项目?

本文http://blogs.msdn.com/b/webdev/archive/2014/04/09/ef-code-first-migrations-deployment-to-an-azure-cloud-service.aspx 提供了一些如何详细说明滚动自己的执行代码优先迁移选项的版本,是一个潜在的解决方法,但它过去只是工作.

Ren*_*ont 0

在 .pubxml 文件中,必须将 ObjectGroup 重命名为 Dbcontext 的全名:m4d.Migrations.Configuration。否则,它似乎被忽略了。

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="m4d.Migrations.Configuration" Order="1" Enabled="True">
      <Destination Path="Data Source=*" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="m4d.Context.DanceMusicContext, m4d" MigrationConfiguration="m4d.Migrations.Configuration, m4d" Origin="Configuration" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>
Run Code Online (Sandbox Code Playgroud)