首页 > 解决方案 > 如何避免在 EF Core 中加载父记录的所有子项

问题描述

从使用 EF Core 2.1 的 .Net Core Web API 应用程序工作,我试图防止在使用包含时加载所有父级的子级记录。

设置如下:API 正在拉取客户的 IEnumerable 集合。我有一个 Include 语句来提取来自单独表的 CustomerType。

[HttpGet]
public IEnumerable<Customer> GetCustomer()
{
    IEnumerable<Customer> customerList = _context.Customer
        .Include(i => i.CustomerType);
    return customerList;
}

返回 IEnumerable 集合时,每个 Customer 都包含 CustomerType 对象,该对象还包括具有该 CustomerType 的所有客户的 Customer 集合。可以想象,这正在创建一个庞大的数据集。

如何防止 EF Core 包含 CustomerType 的 Customer 集合?我尝试关闭延迟加载

_context.ChangeTracker.LazyLoadingEnabled = false;

但这没有任何效果。

标签: entity-framework-core

解决方案


根据 vivek 的回复,我已经成功更新了 API:

[HttpGet]
public object GetCustomer()
{
    var customerList = _context.Customer
        .Select(s => new 
        {
            s,
            s.CustomerType.CustomerType
        });
    return customerList;
}

推荐阅读