在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; }
}
在开发过程中,它们经常会发生变化,因此我希望在模型发生变化时删除并重新创建数据库。
你是如何设定的?据我所知,为了插入一些初始数据,有种子方法,但它属于哪个类,这个方法在哪里调用?
答案 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());