0

最新の 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

4

1 に答える 1

0

これを投稿した直後に問題が見つかりました...クイックスタートコードでは、データベース初期化戦略がDropCreateDatabaseAlwaysに設定されています。

于 2012-08-06T15:03:36.597 に答える