Lazy Loading in EF Core
Lazy Loading was introduced in Entity Framework Core with EF Core 2.1 to allow better optimizations, performance, and working of the software.
- Lazy Loading is a method of loading and processing only the required data to run the application, the data which is not required at that moment stays untouched.
- It allows the system to perform better and faster and it has become an essential part of the Entity Framework core.
To enable Lazy Loading in Entity Framework core, there are 2 methods which can be applied.
The First method is by installing the Proxy Package provided by Microsoft. All the developer has to do is install
Microsoft.EntityFrameworkCore.Proxies
package which will add all the required proxies needed to run Lazy Loading.After installing the package, the system will ask the developer to allow the installed proxies to access the databases and enable lazy loading.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<EFCoreContext>(b => b.UseLazyLoadingProxies()
.UseSqlServer(ConnectionString));
}
public class Actor
{
public int ActorId { get; set; }
public string FullName { get; set; }
public virtual List<Movie> Movies{ get; set; }
}
public class Movie
{
public int MovieId { get; set; }
public string Title { get; set; }
public virtual Actor Actor{ get; set; }
}
The second method of enabling Lazy Loading in Entity Framework Core is using the
ILazyLoader
interface.- The
ILazyLoader
interface represents a component that is responsible for loading navigation properties if they haven't already been loaded. - It can be embedded directly into the principle entity of the database.
- The
ILazyLoader
can be found inMicrosoft.EntityFrameworkCore.Abstraction
Package.
public class Actor
{
private List<Movie> _movies;