我最近升级到了Entity Framework 6,它似乎打破了数据库的种子。
DataContext.cs
public class DataContext : DbContext
{
public DbSet<BlogSettings> BlogSettings { get; set; }
}
DataContextInitializer.cs
public class DataContextInitializer : CreateDatabaseIfNotExists<DataContext>
{
protected override void Seed(DataContext context)
{
var blogSettings = new BlogSettings()
{
BlogTitle = "My Blog",
MaxBlogsOnHomepageBeforeLoad = 20
};
context.BlogSettings.Add(blogSettings);
context.SaveChanges();
}
}
注意:种子有更多的数据库集和代码,但它们看起来都像这样,并且正在使用以前的版本。
我是由MS SQL Server中的数据库创建并创建了一个用户。我添加了连接字符串。然后我去运行应该导致生成表的Web应用程序,但是我得到了这个:
为上下文“DataContext”启用了迁移,但数据库不存在或不包含映射表。使用迁移创建数据库及其表,例如通过从程序包管理器控制台运行“Update-Database”命令。
我在Configuration.cs中将迁移设置为false,并且我没有_MigrationHistory
表。
Configuration.cs的构造函数
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
我在我的web.config中有这个应该初始化:
<add key="DatabaseInitializerForType DataContext, Test" value="DataContextInitializer, Test" />
我已尝试在<entityFramework>
<contexts>
下添加Global.asax.cs
,我也尝试在Database.SetInitializer(new DataContextInitializer());
using (var context = new DataContext())
{
context.Database.Initialize(true);
}
初始化它,但无济于事。
{{1}}
答案 0 :(得分:0)
我们最近添加了一个在AssemblyInfo.cs
之前运行的类,它在初始化程序有机会运行之前进行调用。