Para mostrar el ejemplo de GraphQL vamos a crear nuestra tabla Caducidad, la cual contiene la fecha en que caducan los productos de cada cliente.
Para poder obtener los datos de los productos, al igual que en OData agregamos nuestro objeto Producto y Cliente como propiedades.
public class Caducidad
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required(ErrorMessage = "Required")]
public int ProductoId { get; set; }
public Producto Producto { get; set; }
[Required(ErrorMessage = "Required")]
public int ClienteId { get; set; }
public Cliente Cliente { get; set; }
[Required(ErrorMessage = "Required")]
public int Cantidad { get; set; }
[Required(ErrorMessage = "Required")]
public DateTime Fecha { get; set; }
}
CaducidadConfiguration.cs
public class CaducidadConfiguration : IEntityTypeConfiguration<Caducidad>
{
public void Configure(EntityTypeBuilder<Caducidad> builder)
{
builder.HasOne(c => c.Cliente)
.WithMany(cc => cc.Caducidades)
.OnDelete(DeleteBehavior.Restrict);
builder.HasOne(e => e.Producto)
.WithMany(c => c.Caducidades)
.OnDelete(DeleteBehavior.Restrict);
builder.HasIndex(e => new { e.ClienteId, e.ProductoId, e.Fecha })
.HasName("UI_ClienteProducto")
.IsUnique();
}
}
public class CaducaContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//Otras configuraciones
modelBuilder.ApplyConfiguration(new CaducidadConfiguration());
}
public virtual DbSet<Caducidad> Caducidad { get; set; }
Add-Migration InitialCreate