Конвертировать запрос из SQL в код Entity Framework первым подходом - PullRequest
0 голосов
/ 28 марта 2020

Я хочу сначала преобразовать свой запрос SQL в код Entity Framework, но не могу его сделать.

Это мой SQL запрос

select * from tests where id in(select testid from PatientTests where PatientId=@id)

Это тестовая модель из этой модели я хочу получить записи.

public class Tests
{
    [Key]
    public int Id { get; set; }

    [Required]
    [Display(Name = "Test Name")]
    public string TestName { get; set; }

    [Display(Name = "Short Name")]
    public string  ShortName { get; set; }

    [Display(Name="Technical Name")]
    public string  TechName { get; set; }

    [Required]
    [Display(Name ="Test Price")]
    public float TestPrice { get; set; }

    [Display(Name = "Sub Department")]
    public int SubDeptId { get; set; }

    [Display(Name = "Center")]
    public int CenterId { get; set; }

    public string Separate { get; set; }


    [Display(Name = "Sub Department")]
    [ForeignKey("SubDeptId")]
    //relation of departments table
    public virtual SubDepartments subDepartments { get; set; }

    [Display(Name = "Centers")]
    [ForeignKey("CenterId")]
    //relation of departments table
    public virtual Centers centers  { get; set; }

}

это модель тестов пациента

 public class PatientTest
{
    [Key]
    public int Id { get; set; }

    [Display(Name ="Patient Id")]
    public int PatientId { get; set; }

    [Display(Name ="Test Id")]
    public int TestId { get; set; }

    [Display(Name ="Doctor")]
    public int DoctorId { get; set; }

    [Display(Name="Center")]
    public int CenterId { get; set; }


    [Display(Name = "Test")]
    [ForeignKey("TestId")]
    //relation of Tests table
    public virtual Tests Tests { get; set; }

    [Display(Name = "Doctor Reference")]
    [ForeignKey("DoctorId")]
    //relation of Doctors table
    public virtual Doctors Doctors { get; set; }

    [Display(Name = "Center Reference")]
    [ForeignKey("CenterId")]
    //relation of Centers table
    public virtual Centers Centers { get; set; }

    [Display(Name = "Patient")]
    [ForeignKey("PatientId")]
    //relation of Patient table
    public virtual Patient Patient { get; set; }

}

Поэтому я хочу получить запись из таблицы тестов, в которой идентификатор должен совпадать с testid таблицы Patient и только заданная идентификационная запись пациента должна быть получена.

1 Ответ

0 голосов
/ 28 марта 2020

В вашей модели Tests отсутствует свойство навигации по PatientTest. Это все еще может быть сделано, хотя.

Здесь немного догадываюсь, как называются ваши свойства контекста.

var tests = context.PatientTests
                   .Where(pt => pt.PatientId == patientId)
                   .Select(pt => pt.Tests)
                   .ToList();
...