我的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; }
}
我想显示患者的姓名,并在同一行显示他们接受的治疗次数。
我能想到的两种解决方案,但寻找更优雅的东西:
谢谢!
答案 0 :(得分: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
});
答案 1 :(得分:1)
最后我找到了答案 - 这很简单!!!
db.Patients.Include("Treatments").ToList()
然后在我看来我只是做
@Html.DisplayFor(modelItem => item.Treatments.Count)
答案 2 :(得分:0)
您应该将ViewModel用于您的视图。我认为这是更好的做法。在这里你可以阅读它:What is ViewModel in MVC?。基本上它是简单的类,只有您的视图所需的这些属性。我不太了解你的模型,但我会做这样的事情
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; }
}
有了这个,一个病人可能会有一个以上的治疗日期。我不是专业爱好者。祝你好运。