Entity framework SetInitializer传递策略时出现实体框架错误
我试图在没有现有数据库的情况下首先使用实体框架代码 我把一切都设置好了,它正在创建数据库 我想做的是设置初始值设定策略,这样我就可以播种一些测试数据 我在这里举了一个例子: 所以我添加了一个初始值设定项,如下所示:Entity framework SetInitializer传递策略时出现实体框架错误,entity-framework,entity-framework-4,Entity Framework,Entity Framework 4,我试图在没有现有数据库的情况下首先使用实体框架代码 我把一切都设置好了,它正在创建数据库 我想做的是设置初始值设定策略,这样我就可以播种一些测试数据 我在这里举了一个例子: 所以我添加了一个初始值设定项,如下所示: public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext> { protected override void Seed(MyContext context)
public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
var students = new List<Student>
{
new Student { FirstMidName = "Carson", LastName = "Alexander", EnrollmentDate = DateTime.Parse("2005-09-01") },
new Student { FirstMidName = "Meredith", LastName = "Alonso", EnrollmentDate = DateTime.Parse("2002-09-01") },
new Student { FirstMidName = "Arturo", LastName = "Anand", EnrollmentDate = DateTime.Parse("2003-09-01") },
new Student { FirstMidName = "Gytis", LastName = "Barzdukas", EnrollmentDate = DateTime.Parse("2002-09-01") },
new Student { FirstMidName = "Yan", LastName = "Li", EnrollmentDate = DateTime.Parse("2002-09-01") },
new Student { FirstMidName = "Peggy", LastName = "Justice", EnrollmentDate = DateTime.Parse("2001-09-01") },
new Student { FirstMidName = "Laura", LastName = "Norman", EnrollmentDate = DateTime.Parse("2003-09-01") },
new Student { FirstMidName = "Nino", LastName = "Olivetto", EnrollmentDate = DateTime.Parse("2005-09-01") }
};
students.ForEach(s => context.Students.Add(s));
context.SaveChanges();
}
}
因此,我认为我发现了问题,我将其改为:
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
//modelBuilder.Conventions
//.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
}
protectedoverride void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
//modelBuilder.Conventions
//.Remove();
}
然而,我仍然得到相同的错误。有什么想法吗
编辑更新:
我刚看了一下,注意到没有填充EdmMetadata表删除数据库并尝试再次运行应用程序。我遇到了同样的问题,解决方案是删除数据库并再次运行应用程序。谢谢
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions
.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
}
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
//modelBuilder.Conventions
//.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
}