Bonjour, je suis en train de créer une application Web et j'ai déjà installé Microsoft Microsoft.entityFrameworkCore et . entityFrameworkCore.Tools .
Lors du processus d'exécution d'une migration complémentaire dans la console du gestionnaire de packages, un message d'erreur s'affiche.
"System.InvalidOperationException: le type d'entité 'Attends' a une clé primaire composite définie avec des annotations de données. Pour définir une clé primaire composite, utilisez une API fluide"
Voici mon code dans le dossier de l'entité.
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 la clé composite correctement?
Sur EF core ..
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 les annotations de données pour en configurer une.
Voici la version de l'API Fluent :
Remarque: Ceci n'est qu'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 savoir plus à ce sujet ici: clé composite