2017-09-13 1 views
1

In meiner EF-Code-First-MVC-Anwendung seed ich eine SuperUser-Basisdaten. Später kann der Wert über die Anwendungsschnittstelle geändert werden.Einfügen von EF-Code - erste Seed-Daten nur einmal

Aber das Problem, mit dem ich konfrontiert bin - diese Seed-Daten aktualisiert jedes Mal, während ich die Anwendung ausführen. Ich möchte diesen Reset nicht durchführen. Gibt es eine Möglichkeit, dies zu vermeiden?

//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); 
    } 
} 

Antwort

1

Sie sich leer ist, wenn die Tabelle überprüfen könnte:

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

Oder, um zu sehen, ob Zeile mit Benutzer-ID = 1 existieren:

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