发布后没有发生数据播种

时间:2014-07-31 18:15:23

标签: entity-framework asp.net-mvc-4

我发布网站后没有运行播种程序。我已经启用了更新数据库,确实构建了数据库,并且在发布后首次运行应用程序时应用了所有迁移,但没有数据被播种。

当手动发起时,所有迁移和播种都可以正常工作。

我有两个几乎相同的项目,一个是使用EF6.0.2,这个项目的一切正常(即播种后发布)。

第二个项目使用EF6.1.1,发布后不会播种。

现在看起来它与Web Deploy向导有关,没有检测到我正在使用数据库迁移,甚至没有让我选择在应用程序启动时执行代码优先迁移(而是我可以选择更新数据库)

任何人都知道为什么它没有检测到我正在使用迁移的事实?

1 个答案:

答案 0 :(得分:0)

原因是部署之后播种没有运行的原因是因为Web Deploy没有检测到我正在使用迁移并且不允许我在部署时启用App Start上的Execute Code First Migrations(相反它只是允许我选择只运行迁移而不运行种子方法的更新数据库!)

我仍然不知道为什么Web部署没有检测到Code First Migrations(我已经发布了第二个问题),但我确实有一个手动解决方案来解决这个问题。

我手动编辑了发布配置文件并删除了以下行

      <Object Type="DbDacFx" Enabled="True">
        <PreSource Path="Data Source=.;Initial Catalog=QSAT;Integrated Security=True" includeData="False" />
        <Source Path="$(IntermediateOutputPath)AutoScripts\QSATDBContext_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
      </Object>
      <UpdateFrom Type="Web.Config">
        <Source MatchValue="Data Source=.;Initial Catalog=QSAT;Integrated Security=SSPI;" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
      </UpdateFrom>

并将其替换为

      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="Data.QSATDBContext, Data" MigrationConfiguration="Data.Migrations.Configuration, Data" Origin="Configuration" />
      </Object>

现在一切正常。