我发布网站后没有运行播种程序。我已经启用了更新数据库,确实构建了数据库,并且在发布后首次运行应用程序时应用了所有迁移,但没有数据被播种。
当手动发起时,所有迁移和播种都可以正常工作。
我有两个几乎相同的项目,一个是使用EF6.0.2,这个项目的一切正常(即播种后发布)。
第二个项目使用EF6.1.1,发布后不会播种。
现在看起来它与Web Deploy向导有关,没有检测到我正在使用数据库迁移,甚至没有让我选择在应用程序启动时执行代码优先迁移(而是我可以选择更新数据库)
任何人都知道为什么它没有检测到我正在使用迁移的事实?
答案 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>
现在一切正常。