ahmed_sa Ответов: 1

Позволяют ли аннотации данных определять ключ компоста для каждой модели ?


Проблема

я работаю дальше asp.net ядро 2.1 visual studio 2017 код сначала с шаблоном репозитория

когда вы создаете базу данных я делаю следующее

Add-Migration InitialCreate

но я получил ошибку

Тип сущности "сотрудник" имеет составной первичный ключ, определенный с помощью аннотаций данных. Чтобы установить составной первичный ключ, используйте fluent API.

и модель сотрудника как показано ниже


Позволяют ли аннотации данных определять ключ компоста для каждой модели или нет ?
Мне нужно создать таблицу сотрудников с ключом компоста EmployeeId , BranchCode

что я делаю ?

Что я уже пробовал:

public class Employee
    {
        [Key]
        [Column(Order = 1)]
        public int EmployeeId { get; set; }
        [Key]
        [Column(Order = 2)]
        public int BranchCode { get; set; }
        public string EmployeeName { get; set; }
        public int EmployeeAge { get; set; }
        public DateTime JoinDate { get; set; }
        public DateTime BirthDate { get; set; }
        public bool Active { get; set; }
    }

1 Ответов

Рейтинг:
2

Richard Deeming

Нет:

Составные ключи можно настроить только с помощью Fluent API - соглашения никогда не будут настраивать составной ключ, и вы не можете использовать аннотации данных для его настройки.

Вы должны использовать fluent API для настройки составного ключа.
class MyContext : DbContext
{
    public DbSet<Car> Cars { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>()
            .HasKey(e => new { e.EmployeeId, e.BranchCode });
    }
}

Существует открытый запрос на добавление поддержки создания составных ключей с использованием аннотаций данных:
Поддержка атрибутов ключей для составного первичного ключа · выпуск #11003 · aspnet/EntityFrameworkCore · GitHub[^]