При использовании ASP.NET Ядро 3.1 и Entity Framework для выполнения начальной миграции я получаю сообщение об ошибке «Для типа сущности ‘X’ требуется определить первичный ключ».

#entity-framework #asp.net-core #key

#entity-framework #asp.net-core #Клавиша

Вопрос:

При использовании ASP.NET Ядро 3.1 и Entity Framework для выполнения начальной миграции я получаю сообщение об ошибке «Для типа сущности ‘X’ требуется определить первичный ключ».

 public class Command
{
    [Key]
    private int _id;
    public int CommandId { get { return _id; } set { _id = value; } }
    public string HowTo { get; set; }
    public string Line { get; set; }
    public string Platform { get; set; }
}
 

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

1. Я думаю, вам следует использовать [NotMapped] Вместо [Key] над вашим _id.

Ответ №1:

Я просто предполагаю, но я думаю, что вы хотите использовать ключ CommandId as — верно??

Если это так, то вам нужно украсить это свойство = [Key] аннотацией — вот так:

 public class Command
{
    private int _id;

    [Key]
    public int CommandId { get { return _id; } set { _id = value; } }

    public string HowTo { get; set; }
    public string Line { get; set; }
    public string Platform { get; set; }
}
 

Или просто оставьте эту аннотацию выключенной — свойство, вызываемое Id или (EntityName)Id будет автоматически использоваться в качестве первичного ключа, и CommandId соответствует этому второму шаблону для автоматически распознанного свойства первичного ключа.

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

1. Привет @marc_s, почему я использовал тот же код, что и op, а затем успешно перенес? Идентификатор команды будет автоматически установлен в качестве первичного ключа.

2. @Yinqiu: CommandId будет использоваться автоматически, ЕСЛИ вы не установите в [Key] другом месте — и установка его в закрытом поле не работает

3. После запуска: dotnet ef migrations add InitialMigration я получаю: для типа объекта ‘Command’ требуется определение первичного ключа. Если вы намеревались использовать тип объекта без ключа, вызовите ‘HasNoKey’ в ‘OnModelCreating’. Для получения дополнительной информации о типах объектов без ключа см. go.microsoft.com/fwlink/?linkid=2141943 .