簡體   English   中英

如何使用實體框架將項目添加到列表屬性

[英]How do i add items to a list property using 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);
        }
    }

您忘記在Seed方法的末尾調用context.SaveChanges()嗎?

您需要添加以下內容:

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

並刪除以下內容:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM