Недопустимый идентификатор столбца

#c# #entity-framework

#c# #entity-framework

Вопрос:

Я пытаюсь получить строку из моей базы данных

 var listItem = ctx.wc_duty_list.FirstOrDefault(x => x.DutyId == param.DutyId);
 

Вот файл cs таблицы, созданный EF

 public partial class wc_duty_list
{
        public int DutyId { get; set; }
        public string AircraftRegistration { get; set; }
        public Nullable<int> Priority { get; set; }
        public string Description { get; set; }
        public string CreatedByStaffCode { get; set; }
        public Nullable<System.DateTime> CreatedTime { get; set; }
        public string StartedByStaffCode { get; set; }
        public Nullable<System.DateTime> StartedTime { get; set; }
        public string ClosedByStaffCode { get; set; }
        public Nullable<System.DateTime> ClosedTime { get; set; }
        public Nullable<int> WorkcardUnscheduledId { get; set; }
        public Nullable<int> WorkcardScheduledId { get; set; }
        public string AssignedStaffCode { get; set; }
        public Nullable<System.DateTime> AssignedTime { get; set; }
        public Nullable<int> PackageCheckId { get; set; }
        public Nullable<int> Status { get; set; }
        public byte[] Concurrency { get; set; }
        public Nullable<int> DutyPriviledgeId { get; set; }
        public Nullable<int> DutyScopeId { get; set; }
        public Nullable<int> AtaId { get; set; }
        public Nullable<int> DutyListTagId { get; set; }
        public Nullable<int> PackageId { get; set; }
        public Nullable<int> WorkcardInhouseId { get; set; }
        public string AirportCode { get; set; }
        public Nullable<int> Workcard3rdId { get; set; }
        public string Note { get; set; }
        public Nullable<int> DutyActionId { get; set; }
        public Nullable<int> SignatureStatus { get; set; }
    
        public virtual wc_duty_action wc_duty_action { get; set; }
        public virtual ev_wc_dutylist_details ev_wc_dutylist_details { get; set; }
        public virtual wc_duty_list_priority wc_duty_list_priority { get; set; }
}
 

При запуске моего кода я получаю эту ошибку:

Недопустимое имя столбца 'wc_duty_list_DutyId'.

Не могли бы вы указать мне правильное направление? 🙂

Приветствия!

Комментарии:

1. не могли бы вы поделиться тем, как вы сопоставляете этот класс со своей таблицей базы данных.

2. разве он не сопоставлен по умолчанию с Entity Framework?

3. Вам необходимо указать ключ и таблицу для каждого объекта. Такого рода ошибки возникали, когда отображение было настроено неправильно или столбец (который, как предполагается, EF), сопоставленный со свойством, не существует в таблице. Другие сценарии — это когда вы используете навигацию по свойствам и отложенную загрузку, но вообще плохо настроены.

Ответ №1:

Вы ищете Where() вместо FirstOrDefault();

 var listItem = ctx.wc_duty_list.Where(x => x.DutyId == param.DutyId).FirstOrDefault();
 

FirstOrDefault возвращает экземпляр определенных элементов в перечислимом. Где ограничивает исходный список элементами, которые соответствуют указанным критериям.