ASP - Core在啟動時遷移EF Core SQL DB

asp.net-core c# entity-framework-core

是否可以讓我的ASP Core Web API確保使用EF Core將數據庫遷移到最新的遷移?我知道這可以通過命令行完成,但我想以編程方式完成。

更新

根據Janshair Khan的回答,我提出了這個助手類:

using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MyWebApi.Models;

namespace MyWebApi
{
    public static class DataSeeder
    {
        public static void SeedData(this IApplicationBuilder app)
        {
            var context = app.ApplicationServices.GetService<MyContext>();

            if (!context.Database.EnsureCreated())
                context.Database.Migrate();
        }
    }
}

您可以從Startup.csConfigure方法調用此方法,如下所示:

app.SeedData();

一般承認的答案

您可以使用

db.Database.EnsureCreated();

使您的數據庫與您當前的模型保持同步。如果要啟用遷移(如果懷疑後續遷移),請使用

db.Database.Migrate();

並隨著時間的推移進行後續遷移。


熱門答案

有關調用db.Database.EnsureCreated()文檔中的db.Database.EnsureCreated()

請注意,此API不使用遷移來創建數據庫。此外,以後無法使用遷移更新創建的數據庫。如果要定位關係數據庫並使用遷移,則可以使用DbContext.Database.Migrate()方法確保創建數據庫並應用所有遷移。

您可能只想調用db.Database.Migrate()

從上面的聲明中獲取的評論來自此處



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow