es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comportamiento del cargador diferido de EF Core con entidades nuevas

Los documentos de EF Core sobre “carga vaga sin proxies” hacen referencia a este ejemplo:

public class Blog
{
    private ICollection<post> _posts;

    public Blog()
    {
    }

    private Blog(ILazyLoader lazyLoader)
    {
        LazyLoader = lazyLoader;
    }

    private ILazyLoader LazyLoader { get; set; }

    public int Id { get; set; }
    public string Name { get; set; }

    public ICollection<post> Posts
    {
        get => LazyLoader.Load(this, ref _posts);
        set => _posts = value;
    }
}

Así que tenemos un constructor sin parámetros y un constructor de inyección de cargador vago. Luego, los documentos dicen lo siguiente:

Este método no requiere que los tipos de entidad hereden ni que las propiedades de navegación sean virtuales, y permite que las instancias de entidad creadas con new se carguen en forma vaga una vez que se adjuntan a un contexto.

Entonces, ¿qué significa esto exactamente para las nuevas instancias? Una entidad creada por EF Core tendrá el cargador vago inyectado, pero una entidad new no lo tendrá. ¿Esto implica que una vez que se agrega un nuevo ítem al contexto, el campo de respaldo del cargador vago debería actualizarse?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El ejemplo en la documentación de EF Core sobre la carga diferida sin proxies muestra una clase Blog con un constructor sin parámetros y un constructor separado que acepta un ILazyLoader. La propiedad Posts utiliza el cargador diferido para cargar la colección _posts solo cuando se accede a ella.

    Según la documentación, este enfoque permite que incluso las nuevas instancias de entidades (es decir, creadas con new en lugar de por EF Core) carguen de forma diferida sus datos relacionados una vez que estén adjuntas a un contexto, sin necesidad de heredar los tipos de entidades ni de que las propiedades de navegación sean virtuales.

    Sin embargo, no se especifica explícitamente cómo se debe actualizar el campo de respaldo del cargador diferido una vez que se agrega una nueva entidad al contexto. Puede ser responsabilidad del desarrollador asegurarse de que esto suceda, o el comportamiento puede variar según la implementación específica.

Comments are closed.