83 votes

ASP.NET ajouter à la migration "clé primaire composite erreur" comment utiliser les API fluent

Bonjour, je suis dans le processus de création d'une Application Web et que vous avez déjà installé le Microsoft.entityFrameworkCore et Microsoft.entityFrameworkCore.Outils.

Pendant le processus de l'exécution d'un complément de la migration dans le gestionnaire de paquets de la console, j'obtiens une erreur

"Le système de.InvalidOperationException: type d'Entité 'Participe' a clé primaire composite défini avec des annotations de données. Pour définir la clé primaire composite, utilisez l'API fluent"

Voici mon code dans l'entité dossier.

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 le régler pour définir la clé composite correctement?

185voto

Sampath Points 4405

Sur EF de base ..

Les clés composites peuvent uniquement être configurés à l'aide de l'API Fluent - les conventions ne sera jamais l'installation d'une clé composite et vous ne pouvez pas utiliser les Données Les Annotations pour configurer un.

Voici l' API Fluent version :

Note: Ceci est juste un exemple. S'il vous plaît 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X