簡體   English   中英

在 EF Core 中,如何檢查是否需要遷移?

[英]In EF Core, how to check whether a migration is needed or not?

我在 Xamarin.iOS 應用程序中使用 Entity Framework Core。

在包含在 iOS 應用程序和其他應用程序之間共享的代碼 (.netstandard 2.0) 的核心項目中,我想知道是否需要遷移,以便我也可以執行一些其他操作。

這是上下文:

public void Initialize()
{
   using (var dbContext = new MyDbContext(m_dbContextOptions))
   {
       --> bool isNeeded = demoTapeDbContext.Database.IsMigrationNeeded()

       demoTapeDbContext.Database.Migrate();
   }
}

我發現最接近的是調用方法GetPendingMigrationsAsync()並檢查掛起遷移的數量,但我不確定這是否是在實體框架中進行此類檢查的最安全方法:

public async Task InitializeAsync()
{
   using (var dbContext = new MyDbContext(m_dbContextOptions))
   {
       bool isMigrationNeeded = (await demoTapeDbContext.Database.GetPendingMigrationsAsync()).Any();

       demoTapeDbContext.Database.Migrate();
   }
}

您應該使用GetPendingMigrationsAsync方法是正確的。 文檔

異步獲取在程序集中定義但尚未應用於目標數據庫的所有遷移。

如果您查看代碼,您可以跟蹤它是如何工作的。 If 獲取程序集中定義的所有遷移並刪除它通過查詢數據庫找到的遷移。

我在DbInitializer使用以下代碼:

public static class DbInitializer
{
    public static void Initialize(ApplicationDbContext context)
    {

        if(context.Database.GetPendingMigrations().Any()){
            context.Database.Migrate();
        }
        ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM