主要是3步走:
1:Enable-Migrations -ProjectName XXX
2:add-migration -ProjectName XXX
3:update-database
1、在vs2012工具菜单里,点击“库程序包管理器”-》程序包管理器控制台
在控制台的PM>标记后,输入“Enable-Migrations -Update-Database -ProjectName Xwb.Core.Data”
输出如下信息:
PM> Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDbContext
正在检查上下文的目标是否为现有数据库...
已为项目 MvcMovie 启用 Code First 迁移。
上面的Enable-Migrations命令创建了一个新的Migrations文件夹,并在该目录下创建了Configuration.cs文件。
使用Visual Studio打开Configuration.cs文件。使用以下代码替换Seed方法内容:
代码先行迁移机制在每次迁移后调用Seed方法,如果存在行数据,则该方法更新现有数据,如果不存在,则该方法插入数据。
按下CTRL+SHIFT+B来生成项目(如果此处不执行此生成操作,后续的步骤会失败)
2、下一步是创建DbMigration 类来初始化迁移。迁移将创建一个新的数据库,这也是在前面步骤中删除数据库文件的原因。
PM> add-migration -ProjectName Xwb.Core.Data FirstMigration
正在为迁移“FirstMigration”搭建基架。
此迁移文件的设计器代码包含当前 Code First 模型的快照。在下一次搭建迁移基架时,将使用此快照计算对模型的更改。如果对要包含在此迁移中的模型进行其他更改,则您可通过再次运行“Add-Migration 201310140747227_FirstMigration”重新搭建基架。
PM>
代码先行迁移机制在Migrations文件夹下创建另外一个类文件,文件名为时间戳+下划线+ FirstMigration.cs,例如201310140747227_FirstMigration.cs,该类包含了创建数据库架构的代码。迁移文件名预置为时间戳有助于排序。查看该文件,包含了创建Movie库表的说明。当你更新数据库时,该类将被执行,创建数据库架构。随后,Seed方法将被执行,测试数据被添加其中。
3、在程序包管理器控制台窗口,键入"update-database"命令来创建数据库和执行Seed方法。
PM> update-database -ProjectName Xwb.Core.Data
指定“-Verbose”标记以查看应用于目标数据库的 SQL 语句。
正在应用基于代码的迁移: [201310140747227_FirstMigration]。
正在应用基于代码的迁移: 201310140747227_FirstMigration。
正在运行 Seed 方法。
PM>
4、自动迁移
在生成的Configuration中做如下修改:
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
① AutomaticMigrationsEnabled:获取或设置 指示迁移数据库时是否可使用自动迁移的值。
② AutomaticMigrationDataLossAllowed:获取或设置 指示是否可接受自动迁移期间的数据丢失的值。如果设置为false,则将在数据丢失可能作为自动迁移一部分出现时引发异常。
遇到的问题:
1.报错:无法生成显式迁移,因为以下显式迁移处于待定状态: [201310051151215_InitialCreate]。请先应用待定的显式迁移,然后再尝试生成新的显式迁移。
解决:第一次实体模型映射到数据库 update-database -ProjectName Xwb.Core.Data
2.报错:在程序集“XXXXXX”中未找到任何迁移配置类型。(在 Visual Studio 中,您可从程序包管理器控制台使用 Enable-Migrations 命令添加迁移配置。)
解决:在enable-Migrations、update-database、Add-Migrations命令后指定迁移配置的项目名称 -ProjectName;启动项中必须包含要迁移配置类型,否则要指定要进行迁移配置类型的项目名称。
联系客服