1

C# Web Api プロジェクトには、いくつかのモデル クラス (Customer と Info など) があります。

public class Customer
{
    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public long OrderId { get; set; }
    [Required]
    public string CompanyName { get; set; }
}

public class Info
{
    [ScaffoldColumn(false)]
    public int Id { get; set; }
    [Required]
    public Customer Customer { get; set; }
    public string Property { get; set; }
    public string Value { get; set; }
}

開発中は頻繁に変更されるため、モデルが変更されるたびにデータベースを削除して再作成したいと考えています。

どのように設定しますか?私が理解しているように、いくつかの初期データを挿入するためにシードメソッドがありますが、それはどのクラスに属し、このメソッドはどこで呼び出されますか?

4

1 に答える 1

1

データベース初期化子を設定します。モデルの変更時に既存のデータベースを削除して再作成する場合は、DropCreateDatabaseIfModelChanges初期化子を使用します。

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<YourContext>());

データベースにデータをシードしたい場合は、独自のイニシャライザを作成し、シード メソッドをオーバーライドします。

public class YourInitializer : DropCreateDatabaseIfModelChanges<YourContext>
{
    protected override void Seed(YourContext context)
    {
        context.Foos.Add(new Foo());
        // ...
        context.SaveChanges();
        base.Seed(context);
    }
}

そして、この初期化子を使用します:

Database.SetInitializer(new YourInitializer());
于 2013-08-15T09:58:48.833 に答える