# 8.1.1 Creando la tabla Caducidad

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.

En nuestra carpeta **models**, agregamos el archivo **Caducidad.cs**

Para poder obtener los datos de los productos, al igual que en OData agregamos nuestro objeto Producto y Cliente como propiedades.

{% code title="Caducidad.cs" %}

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

{% endcode %}

Agregamos nuestras llaves foráneas e índices en nuestra carpeta **EntityConfigurations** agregamos nuestro archivo **CaducidadConfiguration.cs**

{% code title="CaducidadConfiguration.cs" %}

```csharp
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();
     }
}
```

{% endcode %}

Agregamos el modelo y la configuración a nuestro archivo **CaducaContext.cs**

{% code title="CaducaContext.cs" %}

```csharp
public class CaducaContext : DbContext
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //Otras configuraciones
        modelBuilder.ApplyConfiguration(new CaducidadConfiguration());
     }
     public virtual DbSet<Caducidad> Caducidad { get; set; }

```

{% endcode %}

Agregamos nuestra migración

```
Add-Migration InitialCreate
```

Actualizamos nuestra base de datos

```
Update-Database
```
