EF Core:同时进行多个 Where 查询

Eri*_*rik 1 entity-framework

我试图在 EF Core 中找到关于从多个表中读取数据的最佳实践,同时将往返数据库所导致的性能损失降至最低。最好我想要像 Redis 中的管道这样的功能,它可以将查询排队,这导致它们只在一次往返中执行,但我认为这在 SQL 中是不可能的。我确实希望可以异步发送所有查询,以便它们同时执行,所以我惊讶地发现 DBContext 不支持多个并发查询。因此,鉴于此,EF Core 中从多个表中获取数据而不等待多次背靠背往返数据库服务器的最佳实践是什么?

Jon*_*nan 5

免责声明:我是Entity Framework Plus项目的所有者

EF+ Query Future(免费和开源)允许您批处理多个查询并在同一命令中执行它们。

因此,在一次往返中执行多个查询。

例子:

// using Z.EntityFramework.Plus; // Don't forget to include this.
var ctx = new EntitiesContext();

// CREATE a pending list of future queries
var futureCountries = ctx.Countries.Where(x => x.IsActive).Future();
var futureStates = ctx.States.Where(x => x.IsActive).Future();

// TRIGGER all pending queries in one database round trip
// SELECT * FROM Country WHERE IsActive = true;
// SELECT * FROM State WHERE IsActive = true
var countries = futureCountries.ToList();

// futureStates is already resolved and contains the result
var states = futureStates.ToList();
Run Code Online (Sandbox Code Playgroud)