| 

.NET C# Java Javascript Exception

2
Ich nutze EF5 und Code First. Ich habe mir zum Context einen Initializer geschrieben, der im Seed() ein paar Daten erzeugen soll. Im ctor des DbContext wird mit

Database.SetInitializer(new MyInitializer());


die Datengenerierung angestoßen.

Der Initializer steht auf DropCreateDatabaseIfModelChanges.

Ich habe mir dazu einen Test geschrieben und da läuft es sporadisch. Beim Starten der Anwendung meistens überhaupt nicht, es sei denn ich lösche die DB vorher. Allerdings erzeugt er die Demo Daten dann doppelt. Ich habe mir das im Debugger angeschaut und finde nichts wo er ein 2. Mal über den Initializer geht.

Kennt das Phänomen jemand?
News:
03.09.2013
dkb 71 1 3
dkb 71 1 3
2 Antworten
0
Fehlt bei Dir nicht der DBContext?
class Program
{
static void Main(string[] args)
{
DbDatabase.SetInitializer<PersonContext>(new MyInitializer());

using (var ctx = new PersonContext())
{
// Perform Data Access
}
}
}

public class PersonContext : DbContext
{
public DbSet<Person> People { get; set; }
}

public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
}

public class MyInitializer: DropCreateDatabaseIfModelChanges<PersonContext>
{
protected override void Seed(PersonContext context)
{
//Foo
}
}
03.09.2013
judgy 3,0k 1 1 8
0
Der Initializer soll im Context aufgerufen werden.

public class TrameloContext : DbContext, IDbContext
{
public TrameloContext()
: base("Name=TrameloContext")
{
Database.SetInitializer(new TrameloInitializer());
}

//TODO: Mapping festlegen
//Beispiele
public DbSet<TariffCategory> Categories { get; set; }
public DbSet<Tariff> Tariffs { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TariffCategory>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<Tariff>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}


Klappt ja auch meistens. Nur wenn dann einmal zu viel! Und dann gar nicht mehr wenn die DB schon da ist. Dann muss ich Sie erst wieder löschen vor dem nächsten Start!
03.09.2013
dkb 71 1 3

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH