0

我的 mvc 模型中有以下类,我正在使用 EF

 public class Patient
    {
        [Key()]
        public int PatientId { get; set; }
        public string Name { get; set; }
     }

public class Treatment
    {
        [Key()]
        public int Id { get; set; }

        [ForeignKey("Patient")]
        public int PatientId { get; set; }
        public Patient Patient { get; set; }

        [DataType(DataType.DateTime)]
        public DateTime TreatmentDate { get; set; }
}

我想显示患者的姓名,并在同一行显示他们接受的治疗次数。

我能想到但寻找更优雅的两种解决方案:

  1. 迭代我的患者并为每个计数其治疗
  2. 分组治疗和计数。然后加入该结果和患者之间。

谢谢!

4

3 回答 3

1
public class Patient
{
    [Key()]
    public int PatientId { get; set; }
    public string Name { get; set; }
    public ICollection<Treatment> Treatments
 }

在你看来;

@foreach(var item in Model)
{
    <h1>@item.Name</h1>
    <h2>@item.Treatment.TreatmentDate
}

在您的查询中;

db.EntityName.Select(p=> new Treatment()
{
    PatientId = p.PatientId,
    .....
...
    Treatments = p.Treatments
});
于 2013-03-15T15:55:58.483 回答
1

终于我找到了答案——而且很简单!!!

db.Patients.Include("Treatments").ToList()

然后在我看来我只是做

@Html.DisplayFor(modelItem => item.Treatments.Count)
于 2013-03-17T09:02:14.687 回答
0

您应该为您的 Views 使用 ViewModel 。我认为这是更好的做法。在这里您可以阅读:什么是 MVC 中的 ViewModel?. 基本上它是一个简单的类,只有你的视图需要的这个属性。我不太了解您的模型,但我会做这样的事情

    public class Patient
    {

        public int Id { get; set; }// if it's Id it's default Primery Key
        public string FirstName { get; set; }
 public string LastName { get; set; }
     }

public class Treatment
    {

        public int Id { get; set; }// if it's Id it's default Primery Key


        public Patient IdPatient { get; set; } // Your Foreign key

        [DataType(DataType.DateTime)]
        public DateTime TreatmentDate { get; set; }
}

这样,一名患者可能有不止一个 TreatmentDate 。我不只是爱好者。祝你好运。

于 2013-03-17T08:26:03.040 回答