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 。

  • 相关阅读:
    ubuntu在图形界面下打开一个终端
    [置顶] 屠夫与大夫
    service bound(一)
    Android Interface Definition Language (AIDL)
    service bound(二)
    移动应用开发原则
    Service bound(三)
    Linux 安装SSH服务
    JDK中设计模式
    Bad Hair Day【单调栈】
  • 原文地址:https://www.cnblogs.com/yetsen/p/13646193.html
Copyright © 2011-2022 走看看