На основе документов Entity Framework Core: https://docs.microsoft.com/en-us/ef/core/querying/related-data, из EF Core 2.1 существует способ включить отложенную загрузку с прокси-сервером или без него.
1. Ленивая загрузка с прокси:
а. Убедитесь, что ваше свойство навигации определено как «виртуальное»
б. Установите пакет Microsoft.EntityFrameworkCore.Proxies
с. Включите его с помощью вызова UseLazyLoadingProxies
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseLazyLoadingProxies()
.UseSqlServer(myConnectionString);
Или включите его при использовании AddDbContext
.AddDbContext<BloggingContext>(
b => b.UseLazyLoadingProxies()
.UseSqlServer(myConnectionString));
2. Ленивая загрузка без прокси:
а. Внедрение службы ILazyLoader в объект, как описано в разделе Конструкторы типов объектов. Например:
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;
}
}
По умолчанию EF Core не будет использовать отложенную загрузку с прокси, но если вы хотите использовать прокси, следуйте 1-му подходу.