#sql-server #asp.net-core
#sql-server #asp.net-core
Вопрос:
Я настраиваю новую базу данных, используя метод code-first. И после того, как я определил свои модели с их ключевыми атрибутами, ему все еще не удается найти первичный ключ для моделей.
Я попытался использовать традиционное именование «Id» и атрибуты [Key].
Одна из моих моделей — эта.
public class Band
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id;
public Institution Institution;
public BandName BandName;
}
И код для контекста
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<Band> bands { get; set; }
}
PM> add-migration migration_1
Output: The entity type 'Band' requires a primary key to be defined.
Ответ №1:
Вам нужно добавить getter и setter к вашему идентификатору.
Ваш класс должен выглядеть следующим образом :
public class Band
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public Institution Institution { get; set; }
public BandName BandName { get; set; }
}
Ядру EF необходимо иметь установщик, когда он считывает данные из базы данных и заполняет ваш набор данных.
Подумайте также о добавлении геттеров и сеттеров для других свойств класса (как я добавил это в вашем примере).
ПРИМЕЧАНИЕ: частный сеттер также будет работать public long Id { get; private set; }