• EF迁移命令


    EF迁移设置的最后一步是在包管理器控制台中输入命令“add-migration InitialMigration -IgnoreChanges”。“InitialMigration”(高亮的黄色)是您想要给当前迁移的名称,“IgnoreChanges”句柄是告诉EF Migrations您想要忽略当前数据库:这意味着您希望EF忽略所有现有表,以便不会为现有表生成脚本。

    enable-migrations

    update-database

    获取迁移的脚本

    在运行 Update-Database 的时候,使用参数 -Script 。

    -SourceMigration:$InitialDatabase 用来指定起始的版本, -TargetMigration:"AddPostAbstract" 用来指定目标版本。

    Update-Database to bring the database up-to-date. This time let’s specify the –Verbose flag so that you can see the SQL that Code First Migrations is running.

    https://msdn.microsoft.com/en-us/data/jj591621.aspx#script

    1.Add-Migration Initia-IgnoreChanges 生成已有数据库初始化代码

    2.update-database -verbose 升级数据库并显示sql语句

    3.Update-Database -Script -SourceMigration:"201309201643300_AddCity.cs" -TargetMigration:"201309201708043_ModifyCity.cs"  这个是生成两次迁移的sql语句,TargetMigration省略是到最新

    4.simplemembership的数据库没有migration表 所以迁移的时候如果丢失了迁移类会很麻烦,建议手工修改即可。

    5.context的静态构造函数中可以设置数据库初始化器(用于调试)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    static PortalContext()
    {
        Database.SetInitializer<PortalContext>(null);
     
     
    //DropCreateDatabaseIfModelChanges
    //CreateDatabaseIfNotExists
    //DropCreateDatabaseAlways
    //MigrateDatabaseToLatestVersion
    }

    6.Get-Migrations 获取已经应用的迁移

    7.Enable-Migrations

    在Package Manager Console中执行Enable-Migrations启动迁移。

    执行get-help Enable-Migrations –detailed 查看Enable-Migrations的详细用法。

    -ContextTypeName 指定要使用的Context

    -EnableAutomaticMigrations 启动自动迁移

    -ProjectName 指定搭建的迁移类添加到的项目

    -StartUpProjectName 指定使用的配置文件所在的项目

    -ConnectionStringName 指定使用配置文件中连接字符串的名称

    -ConnectionString 指定使用的连接字符串

    -ConnectionProviderName 指定连接字符串的provider名称

    8.Add-Migration

    在Package Manager Console中执行Add-Migration搭建挂起的Model变化迁移脚本。

    执行get-help Add-Migration –detailed查看Add-Migration的详细用法。

    -Name 指定自定义脚本的名称

    -Force

    -ProjectName

    -StartUpProjectName

    -ConfigurationTypeName 指定使用的迁移配置

    -IgnoreChanges 忽略检测到挂起的model改变,创建一个空的迁移。这个选项可用来为已有的数据库启用迁移创建一个初始的,空的迁移。

    -ConnectionStringName 指定使用配置文件中连接字符串的名称

    -ConnectionString 指定使用的连接字符串

    -ConnectionProviderName 指定连接字符串的provider名称

    9.Update-Database

    在Package Manager Console中执行Update-Database将挂起的迁移更新到数据库。

    执行get-help Update-Database -detailed查看Add-Migration的详细用法。

    -SourceMigration 只有-Script打开时才有效。指定迁移的名称用作更新的起点。忽略则使用最后一次应用的迁移。

    -TargetMigration 指定将数据库更新到哪个迁移的名称。

    -Script 生成SQL脚本

    -Force

    -ProjectName

    -StartProjectName

    - ConfigurationTypeName

    -ConnectionStringName 指定使用配置文件中连接字符串的名称

    -ConnectionString 指定使用的连接字符串

    -ConnectionProviderName 指定连接字符串的provider名称

     http://blog.csdn.net/foren_whb/article/details/45576853

    Context构造函数
    不检查__MigrationHistory 取消当数据库模型发生改变时删除当前数据库重建新数据库的设置。
    Database.SetInitializer<Context>(null);
    重新创建数据库
    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>()); 
    重建数据库运行,生产环境此法严禁使用。


    迁移方法1:
    AutomaticMigrationsEnabled=true;自动迁移
    Enable-Migrations 启用迁移
    Add-Migration 为挂起的Model变化添加迁移脚本
    Update-Database 将挂起的迁移更新到数据库
    Update-Database -Verbose 将模型更新到数据库中并显示更新脚本,将更新脚本复制下来在生产环境中运行
    Get-Migrations 获取已经应用的迁移


    AutomaticMigrationsEnabled=false;非自动迁移
    Enable-Migrations [-ContextTypeName <String>] [-EnableAutomaticMigrations] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConnectionStringName <String>] [-Force] [<CommonParameters>]
    ContextTypeName:项目继承自DBContext的类名字。
    EnableAutomaticMigrations:开启自动迁移。
    ProjectName:存放DBContext类的项目名称。
    StartUpProjectName:解决方案中启动项目的名称,作用是调用该项目下的连接字符串。
    ConnectionStringName:连接字符串名称
    上面五个参数是解决问题必须的,其它的无关紧要。
    例如:
    Enable-Migrations -ContextTypeName "MVCCodeFirst.BlogEntities" -ProjectName "MVCCodeFirst" -StartUpProjectName "MVCCodeFirst" -ConnectionStringName "BlogEntities" -Verbose
    依次填好之后,问题解决。
    同样的在Add-Migration、Update-Database的时候也需要填写相应的参数。否则会出现同样错误。
    例如:
    Add-Migration -Name "EditCST_DevicePhoto"  -ProjectName "DBAccessLib" -StartUpProjectName "WebSite" -ConnectionStringName "TJSSDBContext" -Verbose
    Update-Database -Script -ProjectName "DBAccessLib" -StartUpProjectName "WebSite" -ConnectionStringName "TJSSDBContext"  -Verbose


    迁移方法2:
    生产环境中__MigrationHistory表删除,将生产环境中的表与模型更新成一致。

  • 相关阅读:
    [敏捷软工团队博客]Beta阶段项目展示
    [敏捷软工团队博客]Beta阶段使用指南
    [敏捷软工团队博客]Beta阶段测试报告
    [敏捷软工团队博客]Beta阶段发布声明
    [Beta]the Agiles Scrum Meeting 12
    [Beta]the Agiles Scrum Meeting 11
    [Beta]the Agiles Scrum Meeting 10
    [Beta]the Agiles Scrum Meeting 9
    [Beta]the Agiles Scrum Meeting 8
    2020BUAA-个人博客-案例分析
  • 原文地址:https://www.cnblogs.com/shiningrise/p/7625428.html
Copyright © 2020-2023  润新知