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();
        }
    }

これは、最初の起動時に新しいアプリケーションに完全に動作します。ただし、2回目の起動時、または新しい移行の追加後に、作成しようとしているテーブルが既に存在するため、Migrate()メソッドは失敗します。

SQLiteエラー1: 'テーブル\ "MyEntities \"は既に存在します

このエラーは、以前に適用された移行を再実行した場合に発生します。以前は__EFMigrationHistory処理されていたように、データベース自体に移行履歴があることを認識する必要があります。現在、このテーブルは作成されていません。

私は手動でこのソリューションを構築する必要があると思っています。おそらく自分の__MigrationHistoryテーブルを作成し、このポストのように最新の状態に保つ必要があります

私は、人々がこの問題にどのような解決法を使用したのか、あるいは私がばかげていて欠場しているものがあれば疑問に思った。

詳細が必要な場合はお知らせください。

人気のある回答

同じ問題を抱えている間に思いついた限りでは、 デバッグデータベース(\ bin \ Debugフォルダ内)に__EFMigrationsHistoryテーブルがないことがわかりました。 本番データベース(起動プロジェクトのルート)にはありません。それ。

たぶん他の誰かに役立つかもしれません。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ