模型更改时重新创建数据库

时间:2013-08-15 09:56:36

标签: c# entity-framework asp.net-web-api

在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; }
}

在开发过程中,它们经常会发生变化,因此我希望在模型发生变化时删除并重新创建数据库。

你是如何设定的?据我所知,为了插入一些初始数据,有种子方法,但它属于哪个类,这个方法在哪里调用?

1 个答案:

答案 0 :(得分:1)

设置database initializer。如果要在模型更改时删除现有数据库并重新创建,请使用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());