Jos*_*off 12 entity-framework ef-migrations
我有一个使用Entity Framework 4.1 Code First创建的生产系统.现在,我已升级到4.3并需要应用迁移,但我需要涵盖几个用例:
Seed()方法还应用了一些独特的索引.)如何创建迁移和初始化程序(或初始化程序)以涵盖这两种情况?
bri*_*lam 28
由于您的生产数据库是使用EF 4.1创建的,因此您需要做一些工作才能准备好与迁移一起使用.从dev environemnt中运行的当前生产代码的副本开始.确保dev数据库不存在.
升级项目以将EF 4.3(或更高版本)与迁移一起使用,并创建初始迁移到快照目前生产的生产.
Update-Package EntityFramework
Enable-Migrations
Add-Migration InitialCreate
Run Code Online (Sandbox Code Playgroud)使用匹配的迁移代码替换数据库初始化程序.
对于种子数据,将其添加到文件的Seed()方法中Migrations\Configuration.cs.请注意,与Seed()初始化程序中的方法不同,此方法每次Update-Database调用时都会运行.它可能需要更新行(重置种子数据)而不是插入它们.该AddOrUpdate()方法可以帮助解决这个问题.
由于现在可以使用迁移创建唯一的indecies,因此应将它们添加到Up()InitialCreate迁移的方法中.您可以CreateTable()使用该Index()方法将它们与调用链接起来,也可以通过调用该CreateIndex()方法.
您可以立即使用MigrateDatabaseToLatestVersion初始化程序在初始化期间运行迁移.
获取脚本以引导生产环境.
Update-Database -Script
Run Code Online (Sandbox Code Playgroud)
从生成的脚本中,您将要删除几乎所有内容,因为表格存在.您需要的部分是CREATE TABLE [__MigrationHistory]和INSERT INTO [__MigrationHistory]声明.
(可选)删除EdmMetadata表,因为不再需要它.
一旦你做了这些事情,你就应该选择迁移.新开发人员可以Update-Database从头开始运行以创建数据库,您可以Update-Database针对生产运行(或使用迁移初始化程序)以在其中应用其他迁移.
| 归档时间: |
|
| 查看次数: |
6361 次 |
| 最近记录: |