zoukankan      html  css  js  c++  java
  • Entity Framework Code First 迁移数据库

    新版EF,系统实现过程中如果对Model进行更改,队形修改数据库并不能正常运行项目,需要借助Code First 手动迁移数据库

    首先启用迁移,允许迁移Context

    Tools->Library Package Manager->Package Manager Console 运行 Enable-Migrations 

    执行命令在项目中创建Migrations 文件夹 ,包含两个类

    Configuration 类:给定迁移的相关配置

    InitialCreate 类:继承迁移基类,实现Up和Down方法,Up方法数据库向上迁移时执行,Down方法数据库向下迁移时执行。主要是实现数据库的建表,删除表,添加列,删除列,创建主键、外键,删除主键、外键,重命名等操作。

    接下来就可以生成迁移和执行迁移

    Add-Migration + 迁移名  将根据自创建上次迁移以来您对模型所做的更改,为下一次迁移搭建基架。

      该操作生成一个迁移名定义的类,和InitialCreate 类一样,定义了相应的数据库更改操作。

    Update-Database 将所有挂起的迁移应用于数据库。

      迁移到特定版本(包括降级)  运行 Update-Database –TargetMigration: 迁移名

      如果要一直回滚到空数据库,可以使用 Update-Database –TargetMigration: $InitialDatabase 

    如何实现数据的移动和更改(如新创建的列,采用已存在列的数据填充):

      Sql("相应的SQL数据操作语句");

    获取 数据库迁移 SQL 脚本(如将更改推送到测试服务器或其他开发人员机器)

      运行 Update-Database 命令,但此时指定 –Script 标记,使更改写入脚本而不应用。

      希望产生的脚本是从一个空数据库($InitialDatabase)到最新的版本 (-TargetMigration为空即可

        Update-Database -Script -SourceMigration: $InitialDatabase  -TargetMigration:

    应用程序启动时自动升级

      通过注册 MigrateDatabaseToLatestVersion 数据库初始化器来实现这一点,数据库初始化器只包含一些逻辑检查用于确保数据库被正确设置,这个逻辑检查将会在context 第一次被使用的时候执行。

      启动时通过 Database.SetInitializer(new MigrateDatabaseToLatestVersion<XXContext,Configuration>()); 设定MigrateDatabaseToLatestVersion 初始值设定项

  • 相关阅读:
    animation动画应用--android游戏开发
    Codeforces Round #203 (Div. 2)
    Codeforces Round #206 (Div. 2)
    Codeforces Round #204 (Div. 2): C
    Codeforces Round #204 (Div. 2): B
    Codeforces Round #204 (Div. 2): A
    Codeforces Round #205 (Div. 2) : D
    Codeforces Round #205 (Div. 2) : C
    Codeforces Round #205 (Div. 2) : B
    Codeforces Round #205 (Div. 2) : A
  • 原文地址:https://www.cnblogs.com/my-tzc/p/EntityFramework.html
Copyright © 2011-2022 走看看