Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

362
Vistas
Carga perezosa vs carga ansiosa

¿Bajo qué situación podría ser más beneficiosa la carga ansiosa que la carga perezosa?

La carga diferida en Entity Framework es el fenómeno predeterminado que ocurre para cargar y acceder a las entidades relacionadas. Sin embargo, la carga ansiosa se refiere a la práctica de cargar forzadamente todas estas relaciones.

Lo pregunto porque es obvio que la carga diferida es más amigable con los recursos, e incluso si usamos el método ToList() , aún podemos aprovechar el comportamiento de carga diferida.

Sin embargo, pensé que tal vez la carga diferida aumenta la cantidad de solicitudes a la base de datos real y tal vez es por eso que a veces los desarrolladores usan el método Inlcude para forzar la carga de todas las relaciones.

Por ejemplo, cuando se usa el scaffolding automático de Visual Studio en MVC 5, el método Index creado automáticamente en el controlador siempre usa Eager Loading, y siempre me he preguntado por qué Microsoft usa Eager Loading por defecto en ese caso.

Agradecería que alguien me explicara en qué situación sería más beneficiosa la carga ansiosa que la carga diferida, y ¿por qué la usamos si hay algo más amigable con los recursos como la carga diferida?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Creo que es bueno categorizar relaciones como esta.

Cuándo usar la carga ansiosa

  1. En "un lado" de las relaciones de uno a muchos que seguramente se usan en todas partes con la entidad principal. como propiedad de usuario de un artículo. Categoría propiedad de un Producto.
  2. En general, cuando las relaciones no son demasiado y la carga ansiosa será una buena práctica para reducir más consultas en el servidor.

Cuándo usar la carga diferida

  1. Casi en todos los "lados de la colección" de las relaciones de uno a muchos. como Artículos de Usuario o Productos de una Categoría
  2. Sabes exactamente que no necesitarás una propiedad al instante.

Nota: como dijo Transcendent, puede haber un problema de eliminación con la carga diferida.

over 4 years ago · Santiago Trujillo Denunciar

0

Carga ansiosa: la carga ansiosa lo ayuda a cargar todas las entidades necesarias a la vez. es decir, los objetos relacionados (objetos secundarios) se cargan automáticamente con su objeto principal.

Cuándo usar:

  1. Use Eager Loading cuando las relaciones no sean demasiado. Por lo tanto, Eager Loading es una buena práctica para reducir más consultas en el servidor.
  2. Utilice Eager Loading cuando esté seguro de que utilizará entidades relacionadas con la entidad principal en todas partes.

Carga diferida: en caso de carga diferida, los objetos relacionados (objetos secundarios) no se cargan automáticamente con su objeto principal hasta que se solicitan. De forma predeterminada, LINQ admite la carga diferida.

Cuándo usar:

  1. Use Lazy Loading cuando esté usando colecciones de uno a muchos.
  2. Utilice Lazy Loading cuando esté seguro de que no está utilizando entidades relacionadas al instante.

NOTA: Entity Framework admite tres formas de cargar datos relacionados: carga ansiosa, carga diferida y carga explícita.

over 4 years ago · Santiago Trujillo Denunciar

0

La carga diferida producirá varias llamadas SQL, mientras que la carga ansiosa puede cargar datos con una llamada "más pesada" (con uniones/subconsultas).

Por ejemplo, si hay un ping alto entre su web y los servidores sql, optaría por la carga ansiosa en lugar de cargar los elementos relacionados 1 por 1 con la carga diferida.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda