当有人更改数据模型时,我正在使用实体框架代码优先迁移来更改我的本地数据库。"update database"
当我想合并从另一个开发人员签入的数据库更改并且进行模型更改并且调用 Seed 方法用最新数据填充数据库时,我运行。
我刚刚使用 TeamCity 设置了一个 CI 环境,以将代码更改推送到最新的构建环境、IAT 环境和 UAT 环境。
问题是当我运行该站点时,会创建一个空数据库,但没有运行 Seed 方法。如何使 Seed 方法运行以及在部署时对其进行任何新的数据库更改?
当有人更改数据模型时,我正在使用实体框架代码优先迁移来更改我的本地数据库。"update database"
当我想合并从另一个开发人员签入的数据库更改并且进行模型更改并且调用 Seed 方法用最新数据填充数据库时,我运行。
我刚刚使用 TeamCity 设置了一个 CI 环境,以将代码更改推送到最新的构建环境、IAT 环境和 UAT 环境。
问题是当我运行该站点时,会创建一个空数据库,但没有运行 Seed 方法。如何使 Seed 方法运行以及在部署时对其进行任何新的数据库更改?
每次开发人员在他们自己的数据库上运行 Update-Database 时,种子方法都应该运行。对于共享服务器,您可以在命令行上针对每个服务器环境运行 migrate.exe。
通过 NuGet 下载 EF 时,此可执行文件在 Tools 子文件夹中可用。如果您愿意,您可以通过将其与您的应用程序一起部署来自动运行它。然后,在 CI 配置中设置一个命令步骤,以使用适当的标志调用 migrate.exe。
您可以在 MSDN 上找到有关 migrate.exe 的更多信息:
http://msdn.microsoft.com/en-us/data/jj618307.aspx
例如
迁移到最新的迁移
Migrate.exe MyMvcApplication.dll /startupConfigurationFile="..\web.config"运行 migrate.exe 时,唯一的强制参数是程序集,它是包含您尝试运行的迁移的程序集,但如果您不指定配置文件,它将使用所有基于约定的设置。
祝你好运!