2016-04-16 16 views
0

Entity Frameworkの使用中にアイテムをリストに追加する方法を理解するのが難しいです。 シードメソッドを使用してオプションを追加しようとすると、自分のデータベースが作成され、テーブルはそこにありますが、私のオプションのテーブルは空のままです。Entity Frameworkを使用してリストプロパティにアイテムを追加する方法

私のオプションを正しく追加してデータベースに表示され、正しい車両にリンクされるようにするにはどうすればよいですか?

は、私は2つのモデルがあります:

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


    } 

そしてオプション

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

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

をそして、これは私の種子/初期化子です

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

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

は、あなたのGlobal.aspxコードをしてください共有しますか? –

+0

@NazmulHasan done – Vahx

+0

あなたの種子メソッドが確実に呼び出していますか?あなたはマイグレーションについて考えていますか?してください。何が起こっている? –

答えて

0

あなたは多分あなたの種子法の終わりにcontext.SaveChanges()に電話をするのを忘れましたか?

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

し、次のように削除します:あなたは、次を追加する必要が

+0

努力は分かりますが、 Seedメソッドでのデータベースの作成について説明します。これは、私がこのプロジェクトで使用しているドキュメントのいずれにも言及されていません。 – Vahx

-1

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

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