我正在尝试使用EF 4.1的代码优先能力为数据库播种
我在Global.asax的Application_Start方法中有以下代码
Database.SetInitializer<Context>(new DataContextInitializer());
我的Context类只包含一些Public DbSet语句。
这是我的DataContextIntilializer类:
public class DataContextInitializer: CreateDatabaseIfNotExists<Context>
{
protected override void Seed(Context context)
{
new List<Member>{
new Member { LastName = "Allen", FirstName = "Steve", Email = "Jeremy_Allen@Domain.com" },
new Member { LastName = "Mickey", FirstName = "Mouse", Email = "mickey_mouse@Domain.com" },
new Member { LastName = "Optimus", FirstName = "Prime", Email = "Optimus_Prime@Domain.com" },
}.ForEach(m => context.Members.Add(m));
base.Seed(context);
}
我的“受保护的覆盖无效种子”方法甚至没有被调用。我的实施不正确吗?我错过了什么吗?
谢谢!
答案 0 :(得分:0)
您的数据库是否已创建?你是如何触发数据库创建的?设置初始化程序只会告诉EF一旦需要数据库它应该使用什么初始化程序,但它不会触发创建。数据库是在EF首次需要时创建的,或者一旦您调用它就会创建:
context.Database.Initialize(false);
如果您的数据库已存在,您的初始化程序也将无效。它仅适用于数据库服务器/文件系统上不存在数据库的情况。