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; }
}

患者の名前と、患者が受けた治療の数を同じ行に表示したいと考えています。

私が考えることができる2つのソリューションですが、よりエレガントなものを探しています:

  1. 患者を反復し、それぞれの治療を数えます
  2. グループトリートメントとカウント。次に、その結​​果と患者の間を結合します。

ありがとう!

4

3 に答える 3

1

最後に答えを見つけました-そしてそれはとても簡単です!!!

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

そして、私の見解では、私は単にそうします

@Html.DisplayFor(modelItem => item.Treatments.Count)
于 2013-03-17T09:02:14.687 に答える
1
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
}

in your query;

db.EntityName.Select(p=> new Treatment()
{
    PatientId = p.PatientId,
    .....
...
    Treatments = p.Treatments
});
于 2013-03-15T15:55:58.483 に答える
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; }
}

これにより、1 人の患者が複数の TreatmentDate を持つことができます。私はただの熱狂的なプロではありません。幸運を。

于 2013-03-17T08:26:03.040 に答える