tutorial onmodelcreating mvc framework first español code c# asp.net entity-framework entity-framework-core

c# - onmodelcreating - ASP.NET agrega migración ''error de clave principal compuesto'' cómo usar API fluida



mvc entity framework español (1)

Hola, estoy en el proceso de crear una aplicación web y ya he instalado tanto Microsoft.entityFrameworkCore como Microsoft.entityFrameworkCore.Tools .

Durante el proceso de ejecución de una migración agregada en la consola del administrador de paquetes, recibo un error

" System.InvalidOperationException: el tipo de entidad ''Attends'' tiene una clave primaria compuesta definida con anotaciones de datos. Para establecer una clave primaria compuesta, use la API fluida "

Aquí está mi código en la carpeta de la entidad.

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

¿Cómo lo ajuste para establecer la clave compuesta correctamente?


En el núcleo de EF ..

Las claves compuestas solo se pueden configurar utilizando la API Fluent: las convenciones nunca configurarán una clave compuesta y no se pueden usar las anotaciones de datos para configurar una.

Aquí está la versión de Fluent API :

Nota: Esto es sólo un ejemplo. Por favor ajústelo de acuerdo a su caso de uso.

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

Puedes leer más sobre esto aquí: clave compuesta