Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用EF的主细节结构_Asp.net Mvc_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 使用EF的主细节结构

Asp.net mvc 使用EF的主细节结构,asp.net-mvc,entity-framework,asp.net-mvc-4,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,在我的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; }

在我的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; }
}
我想在同一行显示患者的姓名以及他们接受治疗的次数

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

  • 迭代我的患者,并为每个患者计算其治疗
  • 分组治疗和计数。然后将结果和患者联系起来

  • 谢谢

    您应该在视图中使用ViewModel。我认为这是更好的练习。在这里你可以阅读:。基本上,它是一个简单的类,只有视图所需的这些属性。我不太了解你的模型,但我会这样做

    public class Patient
    {
        [Key()]
        public int PatientId { get; set; }
        public string Name { get; set; }
        public ICollection<Treatment> Treatments
     }
    
        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; }
    }
    

    这样,一名患者可能有一个以上的治疗日期。我不是职业选手,只是狂热者。祝你好运。

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

    db.Patients.Include("Treatments").ToList()
    
    在我看来,我就是这么做的

    @Html.DisplayFor(modelItem => item.Treatments.Count)
    

    我不明白你的疑问。db是不可枚举的,那么如何“选择”以及什么是ViewModel?抱歉,我错过了表名:Dviewmodel只是自定义ViewModel的一个名称,例如,在您的情况下,它是一种处理方法。viewmodel是类的一种特殊类型,它只能将所需的数据传递给视图,但对我来说仍然没有意义。我需要返回到我的视图患者对象,包括治疗。有两件事我很困惑。1.我的Patient类中有Treatments属性,我不明白为什么它不会自动填充。2.在您的建议中-我返回匿名类型,但我不确定如何将其绑定到我的视图。请参见此。我希望这有帮助:谢谢,但这是一对一的。一名患者可以接受多种治疗。我需要显示一个带有患者数据+他接受治疗次数的网格。
    db.Patients.Include("Treatments").ToList()
    
    @Html.DisplayFor(modelItem => item.Treatments.Count)