Как исправить ошибку в EntityModel?

Здравствуйте. После выполнения данного запроса, а именно после join
var patients = from TD in ConnectControl.MHE.Doctors
    join TPatientCards in ConnectControl.MHE.PatientCard on TD.idDoctor equals TPatientCards.idDoctor
    select new
    {
        pc = TPatientCards.idPatientCard
    };

выдаёт ошибку
An error occurred while executing the command definition


Что самое интересное, такая проблема только с объединением с таблицей PatientCard по его внешнему ключу.

Вот собственно его класс
using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;

    public partial class PatientCard
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public PatientCard()
        {
            this.MedAppointments = new HashSet<MedAppointments>();
            this.Patients = new HashSet<Patients>();
            this.Procedure = new HashSet<Procedure>();
        }

        [Key]
        public int idPatientCard { get; set; }
        public int idDoctor { get; set; }
        public int idRoom { get; set; }
        public string diagnosis { get; set; }
    
        public virtual Doctors Doctors { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<MedAppointments> MedAppointments { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Patients> Patients { get; set; }
        public virtual Rooms Rooms { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Procedure> Procedure { get; set; }
    }


Мне кажется, что он ни чем не отличается от других. В чём может быть такая проблема?
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 2
@ConstKosyanov
back-end разработчик
Как ты настраиваешь связи между таблицами? Без дополнительных настроек EF ожидает свойство <имя_класса>_Id.
Ответ написан
Комментировать
@AIgin
Как писал Константин Косьянов, если нет дополнительных настроек связей (например, через Fluent API), то EF следует соглашению об именовании внешних ключей, которому приведённый код не соответствует. В этом случае необходимо добавить атрибут ForeignKey с именем соответствующего навигационного свойства:
[ForeignKey("Doctors")]
public int idDoctor { get; set; }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы