私は Code First を理解しようとしていますが、これまでモデルに変更を加えるたびに、データベースを削除して再作成する必要があります。現在データベースにあるデータはどうですか? 毎回これを行わなければならず、テーブルに新しい列を追加するなどの変更を行う必要がないことを 100% 確信していない限り、良い Web アプローチにはなりません。これが起こらないようにする別の方法はありますか?
1840 次
2 に答える
1
開発中にテスト データを維持しようとしている場合は、IDatabaseInitializer (つまり、データベース初期化子) の Seed メソッドの使用を検討してください。Seed メソッドは、初期化中 (モデルの変更が適用された後) に呼び出され、指定したテスト データを入力します。
EF で使用するイニシャライザーを指定する最善の方法は、global.asax.cs ファイルです。
次に例を示します。
[グローバル.asax.cs]
Database.SetInitializer<MyApplicationDbContext>(new MyApplicationDbContextInitializer());
[MyApplicationDbContextInitializer.cs]
public class MyApplicationDbContextInitializer : DropCreateDatabaseAlways<MyApplicationDbContext>
{
protected override void Seed(TitleDB context)
{
context.Products.Add(new Product { Id = 1, Name = "Foobar XL" });
context.Products.Add(new Product { Id = 2, Name = "Foobar LG" });
context.Products.Add(new Product { Id = 3, Name = "Foobar MD" });
context.SaveChanges();
base.Seed(context);
}
}
于 2012-06-13T17:36:10.953 に答える
1
デフォルトでは、データベース初期化子は DropCreateDatabaseIfModelChnages に設定されています。データベース初期化子を null に設定して、再作成を避けることができます。
Database.SetInitializer<YourContext>(null);
もう 1 つのオプションは、データベースの移行を使用して、データベースを再作成せずに更新することです。
于 2012-06-05T15:35:15.807 に答える