2017-09-13 4 views
1

Dans mon application EF-code MVC-first, je crée une base de données SuperUser. Plus tard, sa valeur peut être modifiée à partir de l'interface de l'application.Insérer une seule fois les données de premier rang du code EF

Mais le problème auquel je suis confronté - ces données de graine se rafraîchit à chaque fois que je lance l'application. Je ne veux pas cette réinitialisation. y-a-t-il un moyen d'éviter ça?

//This is my DatabaseContext.cs - 
public partial class DatabaseContext : DbContext 
{ 
    public DatabaseContext() : base("name=EntityConnection") 
    { 
     Database.SetInitializer(new MigrateDatabaseToLatestVersion<DatabaseContext, Migrations.Configuration>()); 
    } 
} 

//This is my Configuration.cs- 
internal sealed class Configuration : DbMigrationsConfiguration<DatabaseContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
     AutomaticMigrationDataLossAllowed = false; 
    } 

    protected override void Seed(DatabaseContext context) 
    { 
     User user = new User() 
      { 
       UserId = 1, 
       EmailAddress = "[email protected]", 
       LoginPassword = "123",     
       CurrentBalance = 0, 
      }; 

     context.Users.AddOrUpdate(user); 
    } 
} 

Répondre

1

Vous pouvez simplement vérifier d'abord si la table est vide:

if (!context.Users.Any()) 
{ 
    User user = new User() 
    { 
     UserId = 1, 
     EmailAddress = "[email protected]", 
     LoginPassword = "123", 
     CurrentBalance = 0 
    }; 
    context.Users.AddOrUpdate(user); 
} 

Ou pour voir si la ligne avec UserID = 1 existe:

if (context.Users.Where(a => UserId == 1).Count() == 0) { ...