私は既存のデータベースで Entity Framework 4.3 を使用しており、対応しようとしているシナリオがいくつかあります。
まず、データベースを削除した場合、EF で最初から再作成したいと思います。これには、CreateDatabaseIfNotExists データベース初期化子を正常に使用しました。
次に、モデルを更新し、データベースが既に存在する場合、データベースを自動的に更新したいと考えています。これには Entity Framework 4.3 Migrations を使用しました。
だからここに私の質問があります。いくつかの参照データを必要とする新しいテーブルをモデルに追加するとします。データベース初期化子の実行時と移行の実行時の両方でこのデータが確実に作成されるようにする最善の方法です。私の望みは、データベースを最初から作成しているときにデータが作成され、移行の実行の結果としてデータベースが更新されたときにも作成されることです。
いくつかの EF 移行の例では、人々が移行の UP メソッドで SQL() 関数を使用してシード データを作成するのを見てきましたが、可能であれば、コンテキストを使用してシード データを作成したいと思います (ほとんどのデータベース初期化子の例で見られるように)。 EFの全体的なアイデアがそれを抽象化しているときに、純粋なSQLを使用するのは奇妙に思えます。UP メソッドでコンテキストを使用しようとしましたが、何らかの理由で、テーブルを作成する呼び出しのすぐ下にシード データを追加しようとすると、移行で作成されたテーブルが存在するとは見なされませんでした。
どんな知恵も大歓迎です。