コード ファーストのアプローチで Entity Framework を使用する方法に関するオンライン ビデオ チュートリアルを (まだ) 実行しようとしています。EDM が正常に検証されている限り、実際にデータベースを構築する時が来ました。講師は SQL Server を使用しておりToList()
、DbContext オブジェクトに対して最初のクエリ コマンド ( ) を実行すると、明らかにデータベースが自動的に作成されます。
将来のアプリケーションで SQL Server Compact ファイルベースのデータベースを使用する予定であるため、チュートリアルの例を SQL Server Compact 4.0 で再現しようとしました。NuGet パッケージ「EntityFramework.SqlServerCompact」と「Micrososft SQL Server Compact Edition」をインストールしました。明らかに、これは の新しいプロバイダー エントリにつながりますapp.config
。
<providers>
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
しかし、最初のクエリ コマンドを実行すると、エラー メッセージが表示されます。
コンテキスト 'DataModelContext' の移行が有効になっていますが、データベースが存在しないか、マップされたテーブルが含まれていません。移行を使用してデータベースとそのテーブルを作成します。たとえば、パッケージ マネージャー コンソールから「Update-Database」コマンドを実行します。
実行するUpdate-Database
と、次のメッセージが表示されます。
保留中の明示的な移行はありません。
自動移行を適用しています: 201310311356014_AutomaticMigration。
シード メソッドを実行します。
データベースは作成されませんが、少なくともプログラムは上記のエラー メッセージで終了します。
EF は SQL Server CE データベースを自動的に作成しませんか? その場合、手動で作成した DB をアプリに接続するにはどうすればよいですか?