• 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;
              }
         }
     }
    
  • 相关阅读:
    java.lang.NoClassDefFoundError: org/apache/poi/ss/formula/udf/UDFFinder
    IntelliJ使用指南—— 深入了解IntelliJ的Web部署逻辑
    javascript深入理解js闭包
    git commit -F时用到的commit.log模板
    github上需要生成密钥对:ssh key
    windows和linux字体库位置
    .vimrc配置文件
    iw交叉编译
    libnl和libopenssl,hostapd交叉编译
    linux中断
  • 原文地址:https://www.cnblogs.com/wywnet/p/4043485.html
Copyright © 2020-2023  润新知