如何一起使用2个实体表?

时间:2019-04-18 00:39:20

标签: c# asp.net-mvc entity-framework entity-framework-6

我正在做一个学校项目,该项目将显示我学到的一些数据库属性。我有2个实体类,分别称为Person和CarInformation。我想一起显示Name,Location,WhishedDays(来自Person和Brand),PlateNumber(来自CarInformation)。

我尝试生成一个名为的新类,然后将名称,位置,WishedDays,Brand,PlateNumber分组。在相应的控制器中,我使用Select函数创建了一个列表,但失败了。

CarInformation实体类

        public int Id { get; set; }             //Primary key of carinfo table

        public string Brand{ get; set; }
        public string PlateNumber { get; set; }
        public int Milage { get; set; }
        public string InsuranceCompany{ get; set; }
        public double ConsumptionPerMile { get; set; }
        public int DailyPrice { get; set; }
        public DateTime AvailableDates { get; set; }

        [ForeignKey("Persons")]                      
        public int OwnerId { get; set; }                //foregein key (Person table to carinfo table)
        public virtual Person Persons { get; set; }     //Navigation property


        public List<Sales> Sales { get; set; }

人员实体类

    public int Id { get; set; }                  //primary key of person table

    public string Name { get; set; }
    public string Location { get; set; }
    public int WishedDays { get; set; }

    public virtual CarInformation Cars { get; set; }     //Navigation property

    public List<CarInformation> cars { get; set; }  //bir insana ait birden fazla araba olabilir

    public List<Sales> sales { get; set; }

Person-CarInformation类



 public string Name { get; set; }
 public string Location { get; set; }
 public int WishedDays { get; set; }
 public string Brand { get; set; }
 public string PlateNumber { get; set; }

对应控制器的索引方法

public ActionResult Index()
    {


        var isimler = db.People.
            Select(i => new Person_CarInformation() { Location=i.Location,Name=i.Name, Brand=i.Cars.Brand,PlateNumber=i.Cars.PlateNumber});


        return View(isimler.ToList());
    }

在这种情况下执行时,我得到此结果 Brand和PlateNumber为空。

有人建议吗?

谢谢。

https://imgur.com/D9a8whD

1 个答案:

答案 0 :(得分:1)

您在提取数据时未包括从属实体。您可以通过如下所示更改代码来获取它。

   var isimler = db.People.Include("Cars").
            Select(i => new Person_CarInformation() { Location=i.Location,Name=i.Name, Brand=i.Cars.Brand,PlateNumber=i.Cars.PlateNumber});