微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 .net 5 web api 中的两个表中获取所有数据?

如何解决从 .net 5 web api 中的两个表中获取所有数据?

Patient.cs //这是患者模型类

namespace HMS.Models
{
public class Patient
{
    [Key]
    public string Id { get; set; }
    public string Name { get; set; }
    public int age { get; set; }
    public int Weight { get; set; }
    public string Gender { get; set; }
    public string Address { get; set; }
    public string PhoneNo { get; set; }
    public string disease { get; set; }

    [JsonIgnore]
    public IList<DoctorPatient> DoctorPatients { get; set; }
    public InPatient InPatients { get; set; }
    public OutPatient OutPatients { get; set; }
  }
}

InPatient.cs //这个 InPatient 模型类

namespace HMS.Models
{
  public class InPatient
  {
    [ForeignKey("Patient")]
    public string InPatientId { get; set; }
    public string RoomNo { get; set; }
    public DateTime DateOfAddmission { get; set; }
    public DateTime DateOfdischarge { get; set; }
    public int Advance { get; set; }
    public string LabNo { get; set; }


    public Patient Patient { get; set; }
  }
}

这里的 Patient 和 InPatient 属性是一一对应的

ViewInPatient.cs

namespace HMS.Models
{
  public class ViewInPatient
{
    public string Name { get; set; }
    public int age { get; set; }
    public int Weight { get; set; }
    public string Gender { get; set; }
    public string Address { get; set; }
    public string PhoneNo { get; set; }
    public string disease { get; set; }
    public string RoomNo { get; set; }
    public DateTime DateOfAddmission { get; set; }
    public DateTime DateOfdischarge { get; set; }
    public int Advance { get; set; }
    public string LabNo { get; set; }
}
}

这是我的 DbContext 类

public class ApplicationDbContext:DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options):base(options)
    {

    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<DoctorPatient>()
            .HasOne(x => x.Doctor)
            .WithMany(dp => dp.DoctorPatients)
            .HasForeignKey(di => di.DoctorId);

        modelBuilder.Entity<DoctorPatient>()
            .HasOne(y => y.Patient)
            .WithMany(dp => dp.DoctorPatients)
            .HasForeignKey(pi => pi.PatientId);
    }
    public DbSet<Patient> Patients { get; set; }
    public DbSet<Doctor> Doctors { get; set; }
    public DbSet<DoctorPatient> DoctorPatients { get; set; }
    public DbSet<InPatient> InPatients  { get; set; }

    //public DbQuery<ViewInPatient> ViewInPatients { get; set; }

}

如何像在 ViewInPatient 类中一样获取 Patients 和 InPatients Table 的所有数据? (我试图在 sql server 中创建一个视图,但在添加表窗口中它显示 InPatient 而不是 InPatients 并返回空值)

解决方法

您可以在 Linq 表达式中加入两个模型并返回 ViewInPatient 列表:


var ViewInPatient_set =
    YourContext
    .InPatients
    .Select(i=> new ViewInPatient() 
        {
            Name = i.Patient.Name,// ...
            RoomNo = i.RoomNo,// ...
        }
    )
    .ToList();  // <-- transform to list is optional

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。