ho una DatabaseInitializer
classemetodo di Seed non chiamato, Entity Framework 6
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();
}
}
Nella mia classe DatabaseContext ho impostato l'inizializzatore
public DatabaseContext() : base("DatabaseContext")
{
InitializeDatabase();
}
private void InitializeDatabase()
{
Database.SetInitializer(new DatabaseInitializer());
if (!Database.Exists())
{
Database.Initialize(true);
}
}
Per quanto posso capire il metodo di seme viene richiamato solo una volta eseguita un'operazione come una query. Il mio database è stato creato con successo e sto interrogando la tabella, ma il metodo seed non viene mai chiamato.
Aggiornamento:
Sembra che il problema è causato a causa di una classe che è inheriting
dal mio DatabaseContext
classe, quando si utilizza questa classe per eseguire operazioni di database, il metodo di seme non viene chiamato. Quando si utilizza la mia classe DatabaseContext
, tutto funziona come previsto
public DbSet<TestEntity> TestEntity { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
Hai mai trovato il modo giusto per risolvere il problema? Ho lo stesso problema. –
@John Shedletsky Ho aggiunto la mia soluzione per te come risposta. – user65439