私は既存のデータベースでEntity Framework 4.3を使用していましたが、私はそれに対応しようとしているいくつかのシナリオを持っています。Entity Framework 4.3で段階的にデータをシードする最善の方法
データベースを削除すると、最初からEFで再作成したいと思っています。これに対してCreateDatabaseIfNotExistsデータベースイニシャライザを使用しました。
第2に、モデルを更新してデータベースがすでに存在する場合、データベースを自動的に更新したいと思います。これに対して、Entity Framework 4.3 Migrationsを正常に使用しました。
ここに私の質問があります。私のモデルに、参照データが必要な新しいテーブルを追加するとします。これは、データベースの初期化ツールが実行されているときと、移行が実行されたときの両方で、このデータが確実に作成されるようにするためです。私の望みは、データベースをゼロから作成しているときにデータが作成され、移行が実行された結果としてデータベースが更新されるときです。
いくつかのEFの移行例では、移行のUPメソッドでSQL()関数を使用してシードデータを作成するのを見たことがありますが、可能であれば、シードデータを作成するためにデータベースの初期化の例)、EF全体のアイデアがそれを抽象化しているときに純粋なSQLを使用することは私には奇妙に思えるので、私はUPメソッドでコンテキストを使用しようとしましたが、何らかの理由で、テーブルを作成するための呼び出しのすぐ下にシードデータを追加しようとしたときに、移行で作成されたテーブルが存在しないと考えていませんでした。
どのような知恵にも大変感謝します。
実際には、Upメソッドでコンテキストを作成し、AddOrUpdateを使用して行を挿入できます。ただし、これは移行トランザクションにラップされないため、問題を引き起こす可能性があります。また、モデルが変更されたときに将来コンパイルすることは保証されません。 – Betty
Upメソッドでコンテキストを作成しようとしましたが、テーブルが存在しないというエラーが送出されました。代わりに、 "Up"メソッドでSQLを試してみます。 –
@ラディスラフEFに関するあなたの深い知識は、私を驚かせ続けます。トピックに関する本の作成を検討し、ここで遭遇する一般的な誤解に対処することを考えましたか? – kingdango