#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 .