12

コード ファーストのアプローチで 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 をアプリに接続するにはどうすればよいですか?

4

1 に答える 1

13

<configuration>この問題は、接続文字列を app.config ファイルの-tagの末尾に手動で追加することで解決できます。

  <connectionStrings>
    <add name="DataModelContext"
         providerName="System.Data.SqlServerCe.4.0"
         connectionString="Data Source=C:\Users\sblxxx\Documents\Visual Studio 2012\Projects\Pluralsight\EF5\CodeFirst\db\cfdb.sdf"/>
  </connectionStrings>
于 2013-11-01T08:01:29.757 に答える