zoukankan      html  css  js  c++  java
  • 数据库自动迁移

    此方法最方便,但要避免两个应用程序尝试同时迁移

    1. 程序包管理器控制台工具 中运行 Add-Migration InitialCreate,创建初始迁移,此时会自动在项目中添加Migrations目录

    2. 修改Main方法

    public static void Main(string[] args)
    {
        var host = CreateHostBuilder(args).Build();
    
        using (var scope = host.Services.CreateScope())
        {
            var db = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
            db.Database.Migrate();
        }
    
        host.Run();
    }

    3. 发布网站并运行,此时初始数据库会自动建立

    4. 假设之后修改了表,需要再添加一个迁移,如 Add-Migration AddBlogCreatedTimestamp

    5. 再次发布网站并运行,此时数据库就会自动迁移

    通过原始 SQL 进行任意更改

    原始 SQL 还可用于管理 EF Core 不知道的数据库对象。 为此,请在不进行任何模型更改的情况下添加迁移;将生成一个空迁移,然后可以使用原始 SQL 操作填充该迁移。例如

    migrationBuilder.Sql(
    @"
        UPDATE Customer
        SET FullName = FirstName + ' ' + LastName;
    ");
    
    migrationBuilder.Sql(
    @"
        EXEC ('CREATE PROCEDURE getFullName
            @LastName nvarchar(50),
            @FirstName nvarchar(50)
        AS
            RETURN @LastName + @FirstName;')");

    这可用于管理数据库的任何方面,包括:

    • 存储过程
    • 全文搜索
    • 函数
    • 触发器
    • 视图

    在大多数情况下,在应用迁移时,EF Core 会在其自己的事务中自动包装每个迁移。 遗憾的是,某些迁移操作无法在某些数据库的事务中执行;对于这些情况,你可以通过传递到来选择不使用 suppressTransaction: true 事务 migrationBuilder.Sql 。

  • 相关阅读:
    装饰器 如何理解Python装饰器?
    python装饰器详解
    window 10下安装jdk
    Linux中pam认证详解(上)
    VMware/KVM/OpenStack虚拟化之网络模式总结
    java问题排查命令
    今日面试问题
    Qwtplot3D Qt5.12.0 MinGW 编译运行
    20212022年寒假学习进度06
    Springboot笔记<10>常用注解总结
  • 原文地址:https://www.cnblogs.com/yetsen/p/13646193.html
Copyright © 2011-2022 走看看