EF Основные отношения между 3 таблицами - PullRequest
0 голосов
/ 24 июня 2019

У меня есть таблица Orders, которая имеет Orderid в качестве первичного ключа и идентификатор пациента в качестве внешнего ключа. Моя вторая таблица - это таблица пациентов с идентификатором пациента в качестве первичного ключа. Существует третья таблица OrderPatient, в которой в качестве внешнего ключа используется только идентификатор заказа, но в нем есть все данные пациента (например, имя, фамилия пациента и т. Д.). Таблица OrderPatient не имеет внешнего ключа в качестве внешнего ключа. Я работаю над ядром EF, используя существующую базу данных. Я пытаюсь настроить модель orderpatient, чтобы иметь свойство Patientdetails класса Patients, как показано ниже. Но поскольку в таблице OrderPatient отсутствует идентификатор пациента в качестве ключа, я не могу установить связь в классе контекста. Как установить связь между OrderPatient и классом Patient и заполнить детали Patient при доступе к модели OrderPatient.

Я пытался использовать отношения efcore и свойства навигации.

    public partial class Orders
{

    public int OrderId { get; set; }
    public int CustomerId { get; set; }
    public int PatientId { get; set; }
    public virtual Patients Patient { get; set; }
    public virtual OrderPatient OrderPatient { get; set; }

}


public partial class Patients
{

    public int PatientId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }
    public DateTime? Dob { get; set; }
    public string Ssn { get; set; }
    public string Sex { get; set; }
    public virtual ICollection<Orders> Orders { get; set; }

}

 public partial class OrderPatient
{
    public int OrderId { get; set; }       
    public Patients PatientDetails { get; set; }
    public int? OptHeight { get; set; }
    public int? OptWeight { get; set; }
    public string OptPrimaryLanguage { get; set; }
    public int CreatedBy { get; set; }
    public DateTime CreatedDate { get; set; }
  }  

Я пытаюсь настроить модель orderpatient, чтобы иметь свойство Patientdetails класса Patients, как показано ниже. Но поскольку в таблице OrderPatient отсутствует идентификатор пациента в качестве ключа, я не могу установить связь в классе контекста. Как установить связь между OrderPatient и классом Patient и заполнить детали Patient при доступе к модели OrderPatient.

1 Ответ

0 голосов
/ 24 июня 2019

Добавьте свойство навигации в таблицу пациентов Order для заказа.

public partial class OrderPatient
{
    public int OrderId { get; set; }       
    public Patients PatientDetails { get; set; } //Remove this
    public int? OptHeight { get; set; }
    public int? OptWeight { get; set; }
    public string OptPrimaryLanguage { get; set; }
    public int CreatedBy { get; set; }
    public DateTime CreatedDate { get; set; }

    public virtual Order Order { get; set; }// Add this
}  

И в таблицу заказов

public partial class Orders
{

    public int OrderId { get; set; }
    public int CustomerId { get; set; }
    public int PatientId { get; set; }
    public virtual Patients Patient { get; set; }
    public virtual OrderPatient OrderPatient { get; set; }// Remove this

}

Затем получите доступ к таблице пациентов из OrderPatient.

orderPatient.Order.Patient

Так как вы используете ленивую загрузку.Я думаю, что это будет работать.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...