I am trying to seed a database with the code first ability of EF 4.1
I have the following code in my Application_Start method of Global.asax
Database.SetInitializer<Context>(new DataContextInitializer());
My Context class contains just a few Public DbSet statements.
Here is my DataContextIntilializer class:
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);
}
My “protected override void Seed” method is not even being called. Is my implementation incorrect? Am I missing something?
Thanks!
Is your database created? How did you trigger database creation? Setting initializer will only tell EF what initializer it should use once database is needed but it doesn’t trigger the creation. The database is created once EF first needs it or once you call for example:
Also your initializer will do nothing if your database already exists. It works only in scenario when database doesn’t exist on database server / file system.