質問: 環境: 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のコンソール出力内容 ``` 例外がスローされました: '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 の中) ``` 参考ページ * Invalid object name 'dbo.EdmMetadata' and 'dbo.__MigrationHistory' * Entity Framework で既存DBを使用した時にログ出力されるエラーの解消方法 * SQLite with Entity Framework 6 “no such table”
回答: エラーメッセージで、"no such table: __MigrationHistory"([直訳]__MigrationHistoryというテーブルは有りません)と言われているのですから、まずすべきことはデータベールの構成(どういう名前のテーブルがあるのか等)の確認です。 存在しないテーブルを参照しようとしている限り、「そんなテーブルは有りません!」という例外は出続けます。 必要なテーブルを作るか、(参照しようとしているテーブルの名前を間違えているなら)参照するするテーブルの名前を変えるかしてください。 どんなプログラムなのか等が質問に書かれていない状況で言えることは、このぐらいです。