Entity Framework Core 数据访问与性能优化
1. 复杂查询与 Future Queries
在数据查询中,有时会遇到较为复杂的查询需求。例如下面的 SQL 查询,它从表值函数 GetFlightsFromTVF
中筛选出符合特定条件的航班信息:
[f].[PilotId], [f].[Price], [f].[Seats], [f].[Strikebound],
[f].[Timestamp], [f].[Utilization]
FROM (
Select * from GetFlightsFromTVF(@p0)
) AS [f]
WHERE (([f].[FreeSeats] > 0) AND ([f].[AirlineCode] = N'WWW')) AND
([f].[NonSmokingFlight] = 1)
需要注意的是,当调用存储过程时,内存中的全局过滤器将不起作用。例如下面的查询:
List<Flight> flightSet4 = ctx.FlightSet.
FromSql("EXEC GetFlightsFromSP {0}", "Berlin").ToList();
Entity Framework Core 实际执行的是: EXEC GetFlightsFromSP @p0
。