ASP.NET добавляет миграцию "сложный первичный ключ", как использовать свободный API

Здравствуйте, я занимаюсь созданием веб-приложения и уже установил файлы Microsoft.entityFrameworkCore и Microsoft.entityFrameworkCore.Tools.

В процессе выполнения добавления-переноса в консоли менеджера пакетов я получаю сообщение об ошибке

" System.InvalidOperationException: Тип Entity 'Attends' имеет составной первичный ключ, определенный с аннотациями данных. Чтобы установить составной первичный ключ, используйте свободный API"

Вот мой код в папке сущности.

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace _3241_farmDb.Entities
{

    public class Farm
    {
        [Required, MaxLength(30)]
        [Key]
        public string FarmName { get; set; }
        [Required, MaxLength(15)]
        public string FarmCity { get; set; }
        [Required, MaxLength(9)]
        public string FarmerSSN { get; set; }
    }
    public class Farmer
    {
        [Required, MaxLength(9)]
        [Key]
        public int SS { get; set; }
        [Required, MaxLength(9)]
        public string Fname { get; set; }
        [Required, MaxLength(15)]
        public string Lname { get; set; }
        [Required, MaxLength(15)]
        public string CityName { get; set; }
        [Required, MaxLength(15)]
        public string Address { get; set; }
        [Required, MaxLength(30)]
        public string BoardPositionName { get; set; }
    }
    public class Child
    {
        [Required, MaxLength(9)]
        [Key]
        public int FarmerSS { get; set; }
        [Required, MaxLength(15)]
        [Key]
        public string Fname { get; set; }
        [Required, MaxLength(15)]
        [Key]
        public string Lname { get; set; }
        [Required]
        public int Age { get; set; }
    }
    public class Attends
    {

        [Key, Column(Order = 1)]
        public int FarmerSS { get; set; }
        [Key, Column(Order = 2)]
        public int HotelID { get; set; }
        [Required, MaxLength(15)]
        public string BoardPosition { get; set; }
    }

    public class Livestock
    {
        [Required, MaxLength(15)]
        public int LivestockID { get; set; }
        [Required, MaxLength(15)]
        public string LivestockType { get; set; }
    }
    public class Farm_Houses
    {
        [Required, MaxLength(15)]
        [Key]
        public int LivestockID { get; set; }
        [Required, MaxLength(15)]
        public string FarmName { get; set; }
    }
    public class Crops
    {
        [Required, MaxLength(15)]
        [Key]
        public int CropID { get; set; }
        [Required, MaxLength(15)]
        public string CropName { get; set; }
    }
}

Как настроить его, чтобы правильно установить составной ключ?

Ответы

Ответ 1

На EF ядре..

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

Вот Свободная версия API :

Примечание: Это всего лишь пример. Пожалуйста, настройте его в соответствии с вашим вариантом использования.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Attends>()
        .HasKey(c => new { c.FarmerSS, c. HotelID });
}

Подробнее об этом можно прочитать здесь: составной ключ