Тип объекта не имеет определяемого ключа

Другой 'Entity Type' x 'не имеет определенного ключа', но я установил атрибут [Key] для свойства, поэтому я немного запутался.

Здесь мои сущности и контекстные классы:

namespace DoctorDB.Models
{
    public class Doctor
    {
        [Key]
        public string GMCNumber;
        [Required]
        public string givenName;
        [Required]
        public string familyName;
        public string MDUNumber;
        public DateTime MDUExpiry;
        public string MDUCover;
    }

    public class DoctorContext : DbContext
    {
        public DbSet<Doctor> Doctors { get; set; }
    }
}

Когда я иду для создания своего контроллера, я выбрал его с помощью методов Entity Framework, используя этот объект и контекст:

enter image description here

и я получаю эту ошибку:

enter image description here

Моя единственная мысль заключается в том, нельзя ли успешно использовать [Key] для свойства string. Если вы не можете так справедливо, я буду работать над этим, но я был бы признателен, если бы кто-то мог подтвердить это так или иначе.

Ответ 1

Вам нужно изменить GMCNumber на свойство, а не на поле.

Ответ 2

Чтобы уточнить эту строку:

public string GMCNumber;

должно стать:

public string GMCNumber { get; set; }

Ответ 3

Я столкнулся с тем же сообщением об ошибке, когда я определил свойство как личное.

Ответ 4

Я столкнулся с этим сообщением, столкнувшись с аналогичной проблемой сегодня. Проблема заключалась в том, что я пытался создать эшафот после добавления атрибута [Key] к моей модели и без компиляции. После того как я скомпилирован с атрибутом [Key], строительные леса генерируются просто отлично.

Ответ 5

Я получаю ту же ошибку, когда я использую свойство, которое не является строкой для [Key].

Здесь воспроизводится:

public class Doctor
{
    [Key]
    public Identity ID { get; set; }      
    public string Address { get; set; }
}

public class Identity
{
    [Key]
    public string GivenName { get; set; }
    [Key]
    public string FamilyName { get; set; }
}

Ошибка возникает не во время сборки, а при загрузке сайта:

Исключение типа "System.InvalidOperationException" произошло в System.Web.OData.dll, но не было обработано в коде пользователя

Дополнительная информация: Объект "Доктор" не имеет определенного ключа.