我有以下类在我的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; }
}
我想显示患者的姓名,并在同一行显示他们接受的治疗次数。
我能想到的两个解决方案,但寻找更优雅的:
- 迭代我的病人和每个计数的治疗
- 组治疗及计数。然后在结果和患者之间进行连接。
谢谢!
public class Patient
{
[Key()]
public int PatientId { get; set; }
public string Name { get; set; }
public ICollection<Treatment> Treatments
}
In your view;
@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
});
我终于找到了答案-它是如此简单!!
db.Patients.Include("Treatments").ToList()
然后在我看来,我只需要执行
@Html.DisplayFor(modelItem => item.Treatments.Count)
您应该使用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; }
}
有了这个,一个病人可能有多个治疗日期。我不是专业人士,只是爱好者。好运。