列出与当前相关的实体的值

时间:2014-04-13 21:30:30

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

我有一个显示驱动程序列出其姓名和电话号码的视图。现在,我想添加一个名为status的新列。我遇到的问题是状态不是驱动程序的属性。

状态是作业上可以分配给驱动程序的属性。可以将单个驱动程序分配给一堆作业,我想列出具有最高状态的作业。

所以,让我们说驱动程序和工作定义如下。

[Table("Drivers")]
public class Driver
{
  [Key]
  public int DriverId { get; set; }
  public String Name { get; set; }
  public String Phone { get; set; }
}

[Table("Job")]
public class Job
{
  [Key]
  public int JobId { get; set; }
  [ForeignKey("Driver")]
  public int DriverId { get; set; }
  public virtual Driver Driver { get; set; }
  public int Status { get; set; }
}

我的查看器具有此模型定义,该定义被发送到 View 的构造函数。

public ActionResult Index()
{
  return View(db.Drivers.ToList());
}

public ActionResult Index()
{
  List<Job> jobs = db.Jobs.Include(o => o.Customer).Include(o => o.Driver);
  ...
  return View(jobs.toList());
}

我不确定如何在驱动程序索引页面上显示的模型中包含有关作业状态的信息(至少任何分配了驱动程序的信息)

1 个答案:

答案 0 :(得分:1)

为什么不向驱动程序添加导航属性:

[Table("Drivers")]
public class Driver
{
   [Key]
   public int DriverId { get; set; }
   public String Name { get; set; }
   public String Phone { get; set; }
   public virtual ICollection<Job> Jobs {get; set;}
}

您的数据库应该已经设置为支持这种一对多的关系,因为您已经在作业上引用了驱动程序。

然后添加:

public ActionResult Index()
{
   db.Include.Drivers(x => x.Jobs);
   return View(db.Drivers.ToList());
}