EF 数据迁移

 问 题

支持“AppContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库

 原因以及解决办法

 在用EF CodeFirst模式开发当中难免会对类进行修改,修改后再次运行就会出现异常,提示上下文的模型已在数据库创建后发生改变。

 如果是项目初期开发倒是好办,可以删掉数据库重新建立,但是如果项目已经运行了,我想你不会想初期那样做吧,会照成数据丢失的。这个时候就需要使用EF的数据迁移功能了,下面教你如何使用数据迁移。

 打开VS,工具>库程序包管理器>程序包管理器控制台。

 在控制台中输入Enable-Migrations(不分大小写)。

 输入这个命令后还会在项目中创建Migrations文件夹,里面包含两个文件

 1:Configuration.cs  这个类允许你自己配置对AppContext上下文迁移的行为。比如添加一些数据的初始化操作。

 2:201403310555286_InitialCreate.cs,这个文件名是由 时间戳+下划线+ Initial.cs组成的,这个类包含了创建数据库架构的代码。

 生成和运行迁移

执行“Add-Migration FirstMigration”命令,添加一个名为FirstMigration的迁移

执行“Update-Database”命令,更新数据库架构

另外,如果我们要对指定的项目进行数据迁移,我们只需要在命令后指定项目名称就行了,例如:

Enable-Migrations -ProjectName DemoWeb

Add-Migration FirstMigration -ProjectName DemoWeb

Update-Database -ProjectName DemoWeb

如果更新数据库存在冲突而不能执行更新,可以添加 -Force强制执行,例如:“Update-Database -Force”

 

设置自动迁移
namespace Demo.Data.Migrations
  {
      internal sealed class Configuration : DbMigrationsConfiguration<DemoDbContext>
      {
          public Configuration()
          {
              AutomaticMigrationsEnabled = true;
             AutomaticMigrationDataLossAllowed = true;
          }
     }
 }

 

posted @ 2014-10-22 16:14  YoMe  阅读(752)  评论(0编辑  收藏  举报