Vamos a agregar nuestra clase ClienteCategoria para registrar las categorías de productos que maneja cada cliente. Para que funcionen las opciones de expand de OData voy a agregar un objeto de la tabla Cliente y otro de la tabla Categoria
ClienteCategoria.cs
public class ClienteCategoria
{
/// <summary>
/// Id
/// </summary>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
/// <summary>
/// Id del cliente
/// </summary>
public int ClienteId { get; set; }
/// <summary>
/// Datos del cliente
/// </summary>
public Cliente Cliente { get; set; }
/// <summary>
/// Id de la categoria
/// </summary>
public int CategoriaId { get; set; }
/// <summary>
/// Datos de la Categoría
/// </summary>
public Categoria Categoria { get; set; }
}
En nuestro modelo Categoria.cs vamos a agregar un arreglo de ClientesCategorias para que a partir de una categoría se puedan mostrar sus clientes
Categoria.cs
[Display(Name = "Categoría")]
public class Categoria
{
/// <summary>
/// Crea una nueva categoría <see cref="T:CaducaRest.Models.Categoria"/> class.
/// </summary>
public Categoria() => ClientesCategorias = new Collection<ClienteCategoria>();
/// <summary>
/// Obtiene los clientes categorías
/// </summary>
/// <value>Clientes categorias.</value>
public virtual ICollection<ClienteCategoria> ClientesCategorias { get; set; }
}
Cambiamos también nuestro modelo Cliente la lista de ClientesCategorias para que se puedan realizar las consultas de OData
Cliente.cs
public class Cliente
{
/// <summary>
/// Constructor <see cref="T:CaducaRest.Models.Cliente"/> class.
/// </summary>
public Cliente() => ClientesCategorias = new Collection<ClienteCategoria>();
/// <summary>
/// Para mostrar las categorias de los clientes
/// </summary>
public virtual ICollection<ClienteCategoria> ClientesCategorias { get; set; }
}