最新の EF 5 CF (VS2012 ではなく VS2010) を試しています。私は通常、MSDN EF 5.0 クイックスタートに従っています: コードを最初に使用してモデルを作成する...
コンソール アプリを使用するのではなく、私の DbContext は Windows サービスにあり、最終的には WCF サービスをホストすることでさまざまなデータ サービス メソッドを公開します (クライアントは WPF MVVM になります)。
Windows サービスの OnStart で SetInitializer を呼び出し、簡単なクエリを実行して初期化をトリガーします。
// Start the Windows service.
protected override void OnStart(string[] args)
{
Database.SetInitializer<MediaLibraryContext>(new MediaLibraryContextInitializer());
using (var context = new MediaLibraryContext())
{
var firstMedia = (from m in context.Medias select m).FirstOrDefault();
}
...
そして、EF CF はモデルからデータベースを作成し、期待どおりにシードします。
しかし、サービスを停止/再起動すると、EF はデータベースを削除して再作成しているように見えます(または、テーブルを削除して再作成しているだけでしょうか?)。データベースに対して行った初期化後の変更はすべてなくなり、「シード」データのみが存在します。
私は EF 4.1 と 4.3 を使用したことがありますが、この動作は見たことがありません。どこを見ればいいですか?
お父さん猫
編集:これを投稿した直後に問題が見つかりました...クイックスタートコードには、データベースの初期化戦略が DropCreateDatabaseAlways に設定されています。
それは、コードを注意深く見ずにコピー/貼り付けすることで得られるものです!
DC