Entendiendo Lazy loading | Entity Framework 6 | Programando en ASP.NET MVC 5 HD
El concepto de Lazy Loading se refiere a tener acceso a un recurso justo en el momento que intentamos acceder a este. Esto es, si no intentamos acceder a un recurso, este no se carga. En el caso de Entity Framework, esto nos ofrece la ventaja de que solamente tomaremos de la base de datos lo que necesitemos, y, cargaremos las entidades relacionadas solamente si intentamos acceder a ellas. Esto además hace que nuestro código sea más compacto, pues no tenemos que declarar mediante la función Include el hecho de que queremos cargar las entidades relacionadas. Veremos que los ejemplos de este video son más simples en términos de código comparados con los presentados en el video de Eager Loading. Para configurar Entity Framework para que utilice Lazy Loading solamente debemos marcar las propiedades de navegación con virtual. Luego de esto, podremos acceder a las entidades relacionadas marcadas con virtual sin necesidad de utilizar la función Include. Uno de los peligros del Lazy Loading es que cuando vamos a serializar un modelo, como las propiedades de navegación son virtuales, el serializador incluirá todas las entidades relacionadas, esto en algunos casos no es lo que uno desea. Podemos evitar este problema no utilizando Lazy Loading y mejor utilizando Eager Loading. Es importante destacar que cuando utilizamos Lazy Loading y accedemos a una entidad relacionada, estamos realizando un nuevo query a la base de datos. Esto es a diferencia del Eager Loading en el cual solamente se realiza un query. Si no tienes cuidado con esto, puedes tener graves problemas de velocidad en tu aplicación, como veremos en el siguiente video cuando hablemos del problema n + 1.