2013-03-15 91 views
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. 集團處理和計數。然後在該結果與患者之間加入。

謝謝!

回答

1

最後,我找到了答案 - 它是如此簡單!

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

,然後在我看來,我根本就

@Html.DisplayFor(modelItem => item.Treatments.Count) 
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 
}); 
+0

我不明白您的查詢。數據庫不是可枚舉的,那麼你如何「選擇」什麼是ViewModel? – UshaP 2013-03-17 07:40:41

+0

對不起,我錯過了表格名稱:D – 2013-03-17 07:55:45

+0

viewmodel僅僅是您的自定義視圖模型的名稱,例如在您的情況下它是治療。視圖模型是一種特殊的類,可以將視圖所需的數據只傳遞給視圖 – 2013-03-17 07:57:09

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

與此,一個病人可能有更多然後一個TreatmentDate。我不是專業熱心者。祝你好運。

+0

謝謝,但這是一個人。一名患者可以有多種治療方法。我需要根據患者數據+他接受的治療次數顯示網格。 – UshaP 2013-03-17 08:37:18