ASP.NET ajouter une migration 'erreur de clé primaire composite' comment utiliser L'API fluent

Bonjour je suis en train de créer une Application Web et j'ai déjà installé les deux Microsoft.entityFrameworkCore et Microsoft.entityFrameworkCore.Outils.

Pendant le processus d'exécution d'une migration d'ajout dans la console du gestionnaire de paquets, j'obtiens une erreur

"Système.InvalidOperationException: le type D'entité 'attend' a une clé primaire composite définie avec des annotations de données. Pour définir une clé primaire composite, utilisez l'API fluent "

Ici est mon code dans le dossier entity.

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; }
    }
}

Comment puis-je l'ajuster pour définir correctement la clé composite?

29
demandé sur Sampath 2016-12-01 00:17:41

1 réponses

Sur EF de base ..

Les clés composites ne peuvent être configurées qu'à l'aide de L'API Fluent - les conventions ne configureront jamais une clé composite et vous ne pouvez pas utiliser de données Annotations pour configurer un.

Voici la version de L'API Fluent :

Note: C'est juste un exemple. Veuillez l'ajuster en fonction de votre cas d'utilisation.

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

, Vous pouvez en lire plus à ce sujet ici : clé composite

73
répondu Sampath 2018-06-03 10:05:06