我有一个正在生产的系统,是使用 Entity Framework 4.1 Code First 创建的。现在,我已经升级到 4.3 并需要应用迁移,但我需要涵盖几个用例:
- 新开发人员需要使用种子数据从头开始创建数据库。 (这
Seed()
方法还应用一些独特的索引。)
- 生产环境只需要应用未应用的更改。 (但请记住,此数据库是在 EF 4.1 中创建的,它没有迁移。)
如何创建迁移和初始化程序(或初始化程序)来涵盖这两种情况?
由于您的生产数据库是使用 EF 4.1 创建的,因此您需要做一些工作才能使其准备好用于迁移。从在开发环境中运行的当前生产代码的副本开始。确保开发数据库不存在。
-
升级项目以将 EF 4.3(或更高版本)与迁移结合使用,并创建初始迁移以快照当前的生产情况。
Update-Package EntityFramework
Enable-Migrations
Add-Migration InitialCreate
-
将数据库初始值设定项替换为匹配的迁移代码。
对于种子数据,将其添加到Seed()
的方法Migrations\Configuration.cs
文件。请注意,与Seed()
初始化程序中的方法,该方法每次都会运行Update-Database
叫做。它可能需要更新行(重置种子数据)而不是插入它们。这AddOrUpdate()方法可以对此有所帮助。
由于现在可以通过迁移创建您独特的不确定性,因此您应该将它们添加到Up()
InitialCreate 迁移的方法。您可以将它们链接起来CreateTable()
调用使用Index()方法,或者通过调用CreateIndex() method.
您可以使用将数据库迁移到最新版本初始化程序现在可以在初始化期间运行迁移。
-
获取一个脚本来引导您的生产环境。
Update-Database -Script
从生成的脚本中,您将需要删除几乎所有内容,因为表已经存在。您需要的零件是CREATE TABLE [__MigrationHistory]
and INSERT INTO [__MigrationHistory]
声明。
(可选)删除EdmMetadata
表,因为不再需要它。
一旦你做了这些事情,你就应该可以进行迁移了。新开发者可以运行Update-Database
从头开始创建数据库,您可以运行Update-Database
(或使用迁移初始值设定项)针对生产环境应用额外的迁移。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)