

環境：  
VisualStudio2017  
.NetFramework4.6.1  
SQLite  
EntityFramework6.3

EntityFramework6.3にてコードファーストで作成したDB用ModelをMigtaionで解釈中に以下例外が発生します。  
調べてみたところ、__MigrationHistoryとEdmMetadataを参照していることが原因とありました。__MigrationHistoryとEdmMetadataは自分で作成したテーブルではないです。また、DBSetを使用したテーブル定義が1つもない状態でもこの例外が出力されます。  
どのサイトも対処方法はEntityFramework6.2以下のものでしたが、試しにDbContextのコンストラクタでDatabase.SetInitializerにnullを設定しても、例外が消えることはなかったです。  
EntityFramework6.3で例外を出なくする対処方法が知りたいです。  
※VisualStudioのコンソール出力に以下の例外が出力されても、アプリケーションは期待通りの動作をします（落ちることはないです）。

VisualStudioのコンソール出力内容

[code]

    例外がスローされました: 'System.Data.Entity.Core.ProviderIncompatibleException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.ProviderIncompatibleException' (EntityFramework.dll の中)
    SQLite error (1): no such table: __MigrationHistory in "SELECT 
    [GroupBy1].[A1] AS [C1]
    FROM ( SELECT 
        Count([Filter1].[A1]) AS [A1]
        FROM ( SELECT 
            1 AS [A1]
            FROM [__MigrationHistory] AS [Extent1]
            WHERE [Extent1]
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    SQLite error (1): no such table: __MigrationHistory in "SELECT 
    [GroupBy1].[A1] AS [C1]
    FROM ( SELECT 
        Count([Extent1].[A1]) AS [A1]
        FROM ( SELECT 
            1 AS [A1]
            FROM [__MigrationHistory] AS [Extent1]
        )  AS [Extent1]
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    SQLite trace: IServiceProvider.GetService for type "System.Data.Entity.Core.Common.DbProviderServices" (success).
    例外がスローされました: 'System.Data.Entity.Core.ProviderIncompatibleException' (EntityFramework.dll の中)
    SQLite error (1): no such table: __MigrationHistory in "SELECT 
    [GroupBy1].[A1] AS [C1]
    FROM ( SELECT 
        Count([Filter1].[A1]) AS [A1]
        FROM ( SELECT 
            1 AS [A1]
            FROM [__MigrationHistory] AS [Extent1]
            WHERE [Extent1]
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    SQLite error (1): no such table: __MigrationHistory in "SELECT 
    [GroupBy1].[A1] AS [C1]
    FROM ( SELECT 
        Count([Extent1].[A1]) AS [A1]
        FROM ( SELECT 
            1 AS [A1]
            FROM [__MigrationHistory] AS [Extent1]
        )  AS [Extent1]
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    'BaseApp.exe' (CLR v4.0.30319: BaseApp.exe): 'EntityFrameworkDynamicProxies-EntityFramework' が読み込まれました。
    SQLite error (1): no such table: EdmMetadata in "SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[ModelHash] AS [ModelHash]
    FROM [EdmMetadata] AS [Extent1]
    ORDER BY [Extent1].[Id] DESC LIMIT 1" 
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.Data.Entity.Core.EntityCommandExecutionException' (EntityFramework.dll の中)
    例外がスローされました: 'System.NotSupportedException' (EntityFramework.dll の中)
    
[/code]

参考ページ

  * Invalid object name 'dbo.EdmMetadata' and 'dbo.__MigrationHistory' <https://redwarrior.hateblo.jp/entry/2017/01/23/090000>
  * Entity Framework で既存DBを使用した時にログ出力されるエラーの解消方法  
<https://stackoverflow.com/questions/19379956/invalid-object-name-dbo-
edmmetadata-and-dbo-migrationhistory>

  * SQLite with Entity Framework 6 “no such table”  
<https://stackoverflow.com/questions/41977047/sqlite-with-entity-
framework-6-no-such-table>


CC BY-SA 4.0
2020-03-30T01:54:06.993
65218
2020-03-30T06:56:40.173
2020-03-30T06:56:40.173
32228
32228
question
c# sqlite entity-framework exception
EntityFramework6.3にてmigration時に例外が発生する理由と対策方法が知りたい


エラーメッセージで、"no such table:
__MigrationHistory"([直訳]__MigrationHistoryというテーブルは有りません)と言われているのですから、まずすべきことはデータベールの構成（どういう名前のテーブルがあるのか等）の確認です。

存在しないテーブルを参照しようとしている限り、「そんなテーブルは有りません！」という例外は出続けます。  
必要なテーブルを作るか、(参照しようとしているテーブルの名前を間違えているなら)参照するするテーブルの名前を変えるかしてください。

どんなプログラムなのか等が質問に書かれていない状況で言えることは、このぐらいです。


CC BY-SA 4.0
2020-03-30T02:50:24.550
65220
2020-03-30T02:50:24.550
217
65218
answer