您创建一个自定义数据库初始化,并覆盖Seed
方法
public class MyContextInitializer
: DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
context.ContactTypes.Add(new ContactType { DisplayName = "Home" });
context.ContactTypes.Add(new ContactType { DisplayName = "Mobile" });
context.ContactTypes.Add(new ContactType { DisplayName = "Office" });
context.ContactTypes.Add(new ContactType { DisplayName = "Fax" });
//EF will call SaveChanges itself
}
}
然后你注册这个初始化为您导出的上下文MyContext
:
Database.SetInitializer<MyContext>(new MyContextInitializer());
这是Database
类的静态方法应该在应用程序启动时调用一次。你也可以把它放到你的上下文的静态构造函数,以确保您创建的第一个上下文实例之前初始化器设置:
static MyContext()
{
Database.SetInitializer<MyContext>(new MyContextInitializer());
}
不是基初始化DropCreateDatabaseIfModelChanges<T>
您也可以从DropCreateDatabaseAlways<T>
或CreateDatabaseIfNotExists<T>
,如果得到的更好地满足您的需求。