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