Closed jcadafalch closed 1 year ago
EF hauria de retornar un llistat sense elements. Recorda que les coleccions (llistes, relacions one-to-many/many-to-many de les entitats) s'han d'inicialitzar:
Exemple:
class Entitat {
public ICollecion<string> Strings { get; set; } = new List<string>();
}
A més, millor si la propietat no té un setter. Et deixo un exemple d'entitat d'un projecte meu:
using Datos.Modelos.Identidad;
using Datos.Modelos.Presencia;
using Extensiones;
using System;
using System.Collections.Generic;
namespace Datos.Modelos.Organizacion
{
/// <summary>
/// Modelo que representa una empresa.
/// </summary>
public class Empresa : IAggregateRoot
{
/// <summary>
/// Identificador de la empresa.
/// </summary>
public Guid Id { get; set; } = Guid.NewGuid();
/// <summary>
/// Nombre de la empresa.
/// </summary>
public string Nombre { get; set; }
/// <summary>
/// Número máximo de empleados que puede tener esta empresa.
/// </summary>
/// <remarks>El valor por defecto es <i>1</i>.</remarks>
public int NumeroMaximoEmpleados { get; set; } = 1;
/// <summary>
/// Clave que usan las empresas para realizar operaciones a través de la API.
/// </summary>
public string Token { get; set; }
#region Relaciones
/// <summary>
/// Incidencias disponibles para esta empresa.
/// </summary>
public ICollection<Incidencia> Incidencias { get; } = new List<Incidencia>();
/// <summary>
/// Usuarios que pertenecen a esta empresa.
/// </summary>
public ICollection<Usuario> Empleados { get; } = new List<Usuario>();
#endregion // Relaciones
#region Métodos
public override string ToString() => this.Nombre;
#endregion // Métodos
}
}
Solucionat inicialitzant les llistes i ignorant els cicles de JsonSerializerOptions.
public ICollection<Etiqueta> Etiquetas { get; } = new List<Etiqueta>();
public ICollection<Tarea> Tareas { get; } = new List<Tarea>();
builder.Services.AddControllersWithViews().AddJsonOptions(options => options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles);
Al obtenir el llistat d'etiquetes assignades a una tasca, en cas d'haber etiquetes retorna null.
S'hauria de transformar la següent consulta SQL a EntityFramework.