在 foreach 中使用 EF Core include 方法可能是一个性能问题

Is using EF Core include method inside a foreach can be a performance issue

这几天在做一个项目,这个项目依赖另一个会玩版本库的项目,我的版本库项目基于Generic Repository pattern。 在我的存储库项目中,我创建了一个方法,该方法将从接收到的实体中获取所有数据,并从接收到的表达式中的选定实体加载数据。

我的方法:

public List<TEntity> GetAll<TEntity>(params Expression<Func<TEntity, object>>[] expressions) where TEntity : class
{
    var result = new List<TEntity>();

    foreach (var expression in expressions)
    {
        result = Context.Set<TEntity>().Include(expression).ToList();
    }

    return result;
}

问题:

正如您在上面的方法中注意到的那样,我在迭代 (Foreach) 中使用了 Include 方法,所以我的问题是:是否在 [=15] 中使用了 Include =] 有性能问题或任何其他问题?

您可能需要这个:

public List<TEntity> GetAll<TEntity>(params Expression<Func<TEntity, object>>[] expressions) where TEntity : class
{
    var query = Context.Set<TEntity>().AsQueryable();

    foreach (var expression in expressions)
    {
        query = query.Include(expression);
    }

    return query.ToList();
}