在 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();
}
这几天在做一个项目,这个项目依赖另一个会玩版本库的项目,我的版本库项目基于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();
}