Sqlite的EntityFrameworkCore沒有創建__EFMigrationHistory表

entity-framework-core sqlite uwp

在我解釋我的問題之前,我有一些實體框架5和6代碼首次遷移的經驗,運行add-migration / update-database以及來自Package Manager控制台的一些更具體的命令。所有遷移歷史記錄都是在__MigrationHistory表中開箱即用的。

我現在正在編寫一個UWP應用程序並使用EntityFrameworkCore sqlite。該應用程序設置為支持新的遷移並正確執行。

應用遷移時,應用程序需要在安裝和首次啟動時自動推斷(如果數據庫是否存在)以及當前數據庫遷移版本。然後,它可以應用相關的遷移過程,包括在需要時創建數據庫。

目前,我嘗試在啟動時在我的DbContext中執行遷移:

public class MyContext : DbContext
{        
    public DbSet<SomeEntity> MyEntities { get; set; }

    static MyContext()
    {
        using(var db = new MyContext())
        {
            db.Database.Migrate();
        }
    }

這適用於首次啟動時的新應用。但是,在第二次啟動時,或者在添加新遷移之後,Migrate()方法會失敗,因為它嘗試創建的表已經存在。

SQLite錯誤1:'table \“MyEntities \”已經存在'

此錯誤來自重新運行先前已應用的遷移。數據庫本身需要知道它的遷移歷史,就像之前使用__EFMigrationHistory處理的__EFMigrationHistory 。目前沒有為我創建此表。

我懷疑我需要手動構建一個解決方案,可能會創建我自己的__MigrationHistory表並使其保持最新, 這裡的帖子如此

我想知道人們在這個問題上使用了什麼解決方案,或者是否有任何開箱即用的東西讓我感到愚蠢和缺失。

如果需要更多細節,請告訴我。

熱門答案

至於我遇到同樣的問題,我發現調試數據庫(在你的\ bin \ Debug文件夾中)將沒有__EFMigrationsHistory表,而生產數據庫(啟動項目的根目錄)它。

也許對其他人有幫助。



Related

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