通过 Visual Studio 2013 部署时没有代码优先迁移
No Code First Migrations When Deploying Via Visual Studio 2013
我写了一个 API 当前没有 azure 连接。我现在准备将其发布到 Azure。在这样做时,我假设,就像许多其他部署的情况一样,会有代码优先迁移的选项。该网站已经存在,所以当我登录时,我 select 我的网站在下拉列表中,但我得到的屏幕如下所示,代码优先迁移复选框应该是:
如何更正此问题以便我可以使用代码优先迁移进行部署?
我找到了这个问题的解决方案。如果发生这种情况,那么您的发布配置文件将设置为更新数据库架构,但不允许代码优先迁移。我无法解释为什么 Visual Studio 有时会这样做,但要修复它,您需要更改代表该配置文件的 xml 文件。它们可以在 'Publish Profiles' 文件夹下找到。最有可能的是,您的 <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 already exists' 错误,因为迁移正在尝试创建已经使用模式更新创建的表。
在这篇文章的帮助下,我能够找出问题并加以纠正:http://www.dominicstpierre.com/2012/11/enable-code-first-migrations-check-box.html
我写了一个 API 当前没有 azure 连接。我现在准备将其发布到 Azure。在这样做时,我假设,就像许多其他部署的情况一样,会有代码优先迁移的选项。该网站已经存在,所以当我登录时,我 select 我的网站在下拉列表中,但我得到的屏幕如下所示,代码优先迁移复选框应该是:
如何更正此问题以便我可以使用代码优先迁移进行部署?
我找到了这个问题的解决方案。如果发生这种情况,那么您的发布配置文件将设置为更新数据库架构,但不允许代码优先迁移。我无法解释为什么 Visual Studio 有时会这样做,但要修复它,您需要更改代表该配置文件的 xml 文件。它们可以在 'Publish Profiles' 文件夹下找到。最有可能的是,您的 <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 already exists' 错误,因为迁移正在尝试创建已经使用模式更新创建的表。
在这篇文章的帮助下,我能够找出问题并加以纠正:http://www.dominicstpierre.com/2012/11/enable-code-first-migrations-check-box.html