У меня есть класс 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 вызывается только после выполнения операции, такой как запрос. Моя база данных создана успешно, и я запрашиваю таблицу, но метод семени никогда не вызывается.
Update:
Похоже, проблема вызвана тем, что класс inheriting
из моего класса DatabaseContext
при использовании этого класса для выполнения операций с базой данных метод seed не вызывается. При использовании моего класса DatabaseContext
все работает как ожидается
public DbSet<TestEntity> TestEntity { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}