2016-04-16 2 views
0

Ich habe Schwierigkeiten zu verstehen, wie Elemente zu meiner Liste hinzugefügt werden, während Entity Framework verwendet wird. Meine Datenbank wurde erstellt und die Tabellen sind dort, aber die Tabelle für meine Optionen bleibt leer, wenn ich versuche, Optionen über meine Seed-Methode hinzuzufügen.Wie füge ich Elemente zu einer Listeneigenschaft mithilfe von Entity Framework hinzu

Wie füge ich meine Optionen korrekt hinzu, so dass sie in meiner Datenbank erscheinen und mit dem richtigen Fahrzeug verknüpft sind?

Ich habe 2 Modelle:

Fahrzeug

public class VehicleModels 
    { 

     public virtual int Id { get; set; } 
     public virtual string Naam { get; set; } 
     public virtual string Merk { get; set; } 
     public virtual string Brandstof { get; set; } 
     public virtual string Kleur { get; set; } 
     public virtual string TypeVanMerk { get; set; } 
     public virtual string TypeVanTransmissie { get; set; } 
     public virtual int Kilometerstand { get; set; } 
     public virtual int Bouwjaar { get; set; } 
     public virtual int AantalDeuren { get; set; } 
     public List<Optie> Options { get; set; } 

     public VehicleModels() 
     { 
      Options = new List<Optie>(); 
     } 

     public void AddOption(Optie optie) { 
      if (!Options.Equals(null)) 
      { 
       Options.Add(optie); 
      } 
     } 


    } 

Und Option

public class Optie 
    { 
     public virtual int OptieId { get; set; } 
     public virtual string Naam { get; set; } 

     public Optie(string naam) 
     { 
      Naam = naam; 
     } 
    } 

Und das ist mein Seed/Initializer

public class VehicleDbInitializer : DropCreateDatabaseAlways<VehicleDB> 
    { 

     protected override void Seed(VehicleDB context) 
     { 
      context.VehicleModels.Add(new VehicleModels 
      { 
       Naam = "Auto 1", 
       Merk = "Audi", 
       Brandstof = "Benzine", 
       Kleur = "Rood", 
       TypeVanMerk = "A6", 
       TypeVanTransmissie = "Manueel", 
       Kilometerstand = 60000, 
       Bouwjaar = 2002, 
       AantalDeuren = 5 
      }); 
      context.VehicleModels.Add(new VehicleModels 
      { 
       Naam = "Auto 2", 
       Merk = "BMW", 
       Brandstof = "Diesel", 
       Kleur = "Silver", 
       TypeVanMerk = "6", 
       TypeVanTransmissie = "Manueel", 
       Kilometerstand = 25000, 
       Bouwjaar = 2012, 
       AantalDeuren = 3 
      }); 

      VehicleModels vehicle = new VehicleModels(); 
      vehicle.Naam = "Auto 3"; 
      vehicle.Merk = "Volvo"; 
      vehicle.Brandstof = "Diesel"; 
      vehicle.Kleur = "Silver"; 
      vehicle.TypeVanMerk = "6"; 
      vehicle.TypeVanTransmissie = "Manueel"; 
      vehicle.Kilometerstand = 25000; 
      vehicle.Bouwjaar = 2012; 
      vehicle.AantalDeuren = 3; 


      vehicle.Options.Add(new Optie("Airco")); 
      vehicle.Options.Add(new Optie("Trekhaak")); 
      vehicle.Options.Add(new Optie("Airbags")); 

      context.VehicleModels.Add(vehicle); 

      base.Seed(context); 
     } 
    } 
vielleicht

Global.aspx.cs

public class MvcApplication : System.Web.HttpApplication 
    { 
     protected void Application_Start() 
     { 
      Database.SetInitializer(new VehicleDbInitializer()); 

      AreaRegistration.RegisterAllAreas(); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
     } 
    } 
+0

teilen Global.aspx Code:

private List<Optie> tempList= new List<Optie>(); public List<Optie> Options { get { return tempList; } } 

und entfernen Sie folgen? –

+0

@NazmulHasan getan – Vahx

+0

bist du sicher, dass deine Seed-Methode aufruft? Hast du eine Ahnung von Migration? dann bewirb dich bitte. was ist los? –

Antwort

0

vergessen haben context.SaveChanges() am Ende des Seed-Methode aufrufen?

+0

Schätzen Sie die Mühe, aber nein, das hat keine Wirkung beim Erstellen der Datenbank in der Seed-Methode. Dies wird auch in keiner Dokumentation erwähnt, die ich für dieses Projekt verwendet habe. – Vahx

-1

Sie müssen folgende hinzuzufügen: bitte

public VehicleModels() 
{ 
    Options = new List<Optie>(); 
} 

public void AddOption(Optie optie) { 
    if (!Options.Equals(null)) 
    { 
     Options.Add(optie); 
    } 
} 
Verwandte Themen