我有一个 DatabaseInitializer
类
public class DatabaseInitializer : CreateDatabaseIfNotExists<DatabaseContext>
{
protected override void Seed
(
DatabaseContext databaseContext
)
{
// Seed the hash methods.
var defaultHashMethod = new HashMethod
{
Description = "Default",
CreateDate = DateTime.Now
};
databaseContext.HashMethod.Add(defaultHashMethod);
databaseContext.SaveChanges();
}
}
在我的 DatabaseContext 类中我设置了初始化器
public DatabaseContext() : base("DatabaseContext")
{
InitializeDatabase();
}
private void InitializeDatabase()
{
Database.SetInitializer(new DatabaseInitializer());
if (!Database.Exists())
{
Database.Initialize(true);
}
}
据我所知,seed 方法只会在您执行查询等操作时调用。我的数据库已成功创建,我正在查询表,但从未调用过 seed 方法。
更新:
问题似乎是因为一个类inheriting
从我的DatabaseContext
类引起的,当使用这个类执行数据库操作时,seed 方法不是叫。使用我的 DatabaseContext
类时,一切都按预期工作
public DbSet<TestEntity> TestEntity { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
最佳答案
您需要从 Package Manager Console
调用 Update-Database
。
关于c# - 未调用种子方法, Entity Framework 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25524238/