Вы уже определили свой столбец ID
как идентификационный столбец , и он считается вашим первичным ключом и будет увеличиваться на единицу при каждом добавлении новой записи в таблицу.Вот почему вам разрешено вставлять дубликаты сущностей.Вам нужно указать, какой столбец нужно объявить как PK, либо в вашей модели, если вы используете подход с первым кодом и с помощью Аннотации данных , что-то вроде этого:
[Key]
public string FirstName { get; set; }
Или с помощью уникального ограничения:
[Index("IX_UniqueConstraint", 1, IsUnique = true)]
public string FirstName { get; set; }
[Index("IX_UniqueConstraint", 2, IsUnique = true)]
public string LastName { get; set; }
[Index("IX_UniqueConstraint", 3, IsUnique = true)]
public DateTime DateOfBirth { get; set; }
Вы также можете использовать свободный API для этой цели:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Persons>().HasKey(c => new { c.FirstName, c.LastName, c.DateOfBirth });
}
Или если вы используете DB-firstподход, вы можете объявить это в своей базе данных.