我试图在没有现有数据库的情况下首先使用实体框架代码。
我完成了所有设置并且正在创建数据库。
我想做的是SetInitializer策略,所以我可以为一些测试数据提供种子。
我在这里关注这个例子:
所以我添加了一个这样的初始化器:
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();
}
}
然后我补充道:
Database.SetInitializer<MyContext>(new MyInitializer());
到Application_Start
文件的Global.ascx
并运行该网站。我得到了:
无法检查模型兼容性,因为EdmMetadata类型未包含在模型中。确保已将IncludeMetadataConvention添加到DbModelBuilder约定。
然后我在DataContext中找到了类似的东西:
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>();
}
但是我仍然得到同样的错误。有什么想法吗?
修改更新:
我刚看了一眼,发现EdmMetadata表没有被填充
答案 0 :(得分:4)
删除数据库并尝试再次运行该应用程序。