Ma méthode Seed () n'est jamais appelée dans Code First EF 5
Mon Seed()
méthode n'est jamais appelé. Elle est appelée lorsque je fais une Update-Database
à partir du Gestionnaire de paquets de la Console, mais jamais quand je le lance à partir du code.
Si je supprime ma base de données, toutes les tables sont créées ( si mes classes de migration sont exécutées), mais ma Semence() code n'est jamais appelée.
MVC 4, Entité Cadre de Travail 5 du Code de la Première.
Mondiale.asax:
protected void Application_Start()
{
Database.SetInitializer<MyContext>(new DbInitializer());
}
DBInit:
internal class DbInitializer : MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>
{
}
DBContext:
public partial class MyContext : DbContext
{
public MyContext() : base("DefaultConnection")
{
}
//public DBSets....
}
Configuration:
internal sealed class Configuration : DbMigrationsConfiguration<MyContext>
{
public Configuration()
{
//The constructor is actually called
AutomaticMigrationsEnabled = false;
}
protected override void Seed(MyContext context)
{
//My seed code, never called
}
Ce qui pourrait être mauvais?
source d'informationauteur Magnus Johansson
Vous devez vous connecter pour publier un commentaire.
Donc, la raison était que j'avais besoin de spécifier mes personnalisé Initialiseur dans le fichier de configuration:
Après cela, ma
Seed
méthode est appelée.Veuillez d'abord consulter la accepté de répondre.
Je veux juste ajouter une remarque très importante à cette question.
J'ai été confronté EXACTEMENT le même problème qui est décrit par cette question (et cela me conduire ici). MAIS j'ai été en utilisant CreateDatabaseIfNotExists au lieu de MigrateDatabaseToLatestVersion et ma semence méthode n'a pas été exécutée, même après l'application de la accepté de répondre.
Mon problème est le suivant :
Selon le la documentation de la méthode de la Graine :
le
Seed
méthode de laDbMigrationsConfiguration
ne sera pas exécutée si l'Initialiseur de Base de données est l'une des opérations suivantesSi vous utilisez l'un de ces types, vous devez créer votre propre classe qui hérite de l'un de ces types, puis remplacer les graines de méthode dans votre propre classe.
Dans mon cas, l'ajout de la classe suivante résolu le problème.