1. 什么是 EntityFramework Core 3 多次 Include 导致查询性能低

Entity Framework Core 3 中的多次 Include 查询性能低,是指在查询数据库时,使用多个 Include 指令,会导致查询性能降低。当查询中包含多个 Include 指令时,Entity Framework Core 3 会将查询分解为多个查询,而不是一次性查询,从而导致查询性能降低。

2. 解决方案

(1)使用“ThenInclude”指令:在 Entity Framework Core 3 中,可以使用“ThenInclude”指令,可以将多个 Include 指令合并为一个查询,从而提高查询性能。

var result = dbContext.Table1.Include(x => x.Table2)
   .ThenInclude(x => x.Table3)
   .ThenInclude(x => x.Table4).ToList();
C#

(2)使用“Select”指令:在 Entity Framework Core 3 中,可以使用“Select”指令,可以将多个 Include 指令合并为一个查询,从而提高查询性能。

var result = dbContext.Table1.Select(x => new
{
   Table1 = x,
   Table2 = x.Table2,
   Table3 = x.Table2.Table3,
   Table4 = x.Table2.Table3.Table4
}).ToList();
C#

(3)使用“ExplicitLoading”指令:在 Entity Framework Core 3 中,可以使用“ExplicitLoading”指令,可以将多个 Include 指令合并为一个查询,从而提高查询性能。

var result = dbContext.Table1.ToList();
dbContext.Table1.Include(x => x.Table2).Load();
dbContext.Table2.Include(x => x.Table3).Load();
dbContext.Table3.Include(x => x.Table4).Load();
C#

3. 总结

Entity Framework Core 3 多次 Include 导致查询性能低,可以通过使用“ThenInclude”、“Select”和“ExplicitLoading”指令,将多个 Include 指令合并为一个查询,从而提高查询性能。