通过Visual Studio 2013进行部署时无代码优先迁移

时间:2015-02-11 21:29:33

标签: azure visual-studio-2013 migration ef-migrations

我目前编写的API没有天蓝色连接。我现在准备将此发布到Azure。在这样做的过程中,我假设,与许多其他部署一样,可以选择代码优先迁移。该网站已经存在,所以当我登录时,我在下拉列表中选择了我的网站,但是我得到的屏幕如下所示,代码优先迁移复选框应该是:

enter image description here

如何更正此问题,以便我可以使用代码优先迁移进行部署?

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法。如果发生这种情况,那么您的发布配置文件将设置为更新数据库架构,但不允许代码首次迁移。我无法说出为什么Visual Studio有时会这样做,但要修复它,您需要更改代表该配置文件的xml文件。它们可以在“发布配置文件”文件夹下找到。最有可能的是,您的<PublishDatabaseSettings>元素将包含<Object Type="Dbfx...etc.">和可能的<UpdateFrom>元素。摆脱这些并用下面的替换设置。

<PublishDatabaseSettings>  
  <Objects xmlns="">  
    <ObjectGroup Name="Namespace.Models.YourDBClass" Order="1" Enabled="True">  
      <Destination Path="your-connection-string-goes-here" />  
      <Object Type="DbCodeFirst">  
        <Source Path="DBMigration" DbContext="Namespace.Models.YourDBClass, AssamblyName" MigrationConfiguration="Namespace.Migrations.Configuration, Assambly" Origin="Convention" />  
      </Object>  
    </ObjectGroup>  
  </Objects>  
</PublishDatabaseSettings>

现在清理并重建以获得良好的衡量标准,您应该准备好了。请注意,如果您不删除PublishDatabaseSettings元素中的其他预生成元素,架构将在发布时更新,您第一次尝试命中API时可能会出错,并且会发生迁移。在我的情况下,在大多数情况下,它将是一个“X已存在”错误,因为迁移正在尝试创建已使用模式更新创建的表。

我能够找出问题并在本文的帮助下予以纠正:http://www.dominicstpierre.com/2012/11/enable-code-first-migrations-check-box.html