Ich entwickle ein .Net-Projekt. Ich verwende Entity Framework Code ersten Ansatz, um mit der Datenbank zu interagieren. Ich säte während der Entwicklung einige Pseudodaten in meine Datenbank ein. Aber das Seeding funktioniert nicht. Ich folgte diesem Link - http://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx. Bitte beachten Sie meinen Code unten.Seeding funktioniert nicht in Entity Framework Code Erste Annäherung
Das ist meine ContextInitializer Klasse
public class ContextInitializer : System.Data.Entity.CreateDatabaseIfNotExists<StoreContext>
{
protected override void Seed(StoreContext context)
{
IList<Brand> brands = new List<Brand>();
brands.Add(new Brand { Name = "Giordano" ,TotalSale = 1 });
brands.Add(new Brand { Name = "Nike" , TotalSale = 3 });
foreach(Brand brand in brands)
{
context.Brands.Add(brand);
}
base.Seed(context);
context.SaveChanges();
}
}
Das ist meine Kontextklasse
public class StoreContext : DbContext,IDisposable
{
public StoreContext():base("DefaultConnection")
{
Database.SetInitializer(new ContextInitializer());
}
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Brand> Brands { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
Das ist meine Marke Klasse
public class Brand
{
public int Id { get; set; }
[Required]
[MaxLength(40)]
public string Name { get; set; }
public int TotalSale { get; set; }
}
I-Lösungen online recherchiert und ich folgte Anweisungen. Ich laufe auch context.SaveChanges. Aber es werden keine Daten in die Datenbank eingefügt. Bitte warum funktioniert es nicht? Wie kann ich es bitte reparieren?
Ich habe diese statische StoreContext() { Database.SetInitializer (neue ContextInitializer()); } unterhalb des vorhandenen Konstruktors. Aber es funktioniert nicht. Ich kann den vorhandenen Konstruktor nicht löschen, weil er eine Verbindungszeichenfolge definiert und einen Fehler auslöst, wenn ich das tue. Bitte, was ist falsch mit dem, was ich mache, bitte? –
Oh. Ich denke, dass ich dieses hinzufügen müssen auf dem Web. Konfigurationsdatei. Aber wenn ich hinzufüge, heißt es, Initialisierer kann nicht gesetzt werden. Ich setze PatheinFashionStore.Domain.Concrete.StoreContext ist mein Kontext-Klasse und PatheinFashionStore Hauptprojekt. Also bitte ist das richtig. Die Art, wie ich untergehe. –
Ich habe das Gefühl, dass Sie nicht verstehen [Wann wird die Seed-Methode in einem ersten Migrationsszenario des EF-Codes aufgerufen?] (Http://stackoverflow.com/questions/24142107/when-is-the-seed-method-called) -in-ef-Code-Erstmigrationen-Szenario). –