我目前正在重构一个 Silverlight 应用程序并将常用查询提取到一个实用程序类中。应用程序中有很多查询,虽然有一些明显的目标,但当我开始处理非常小的查询时:
public static readonly Func<STARSEntities, int> CurrentFundingYearId =
CompiledQuery.Compile<STARSEntities, int>(
(ctx) =>
(ctx.STARS_FundingYear.Where(i => i.IsCurrentYear == true)).FirstOrDefault().FundingYearId);
值得编译吗?我读过的所有内容(Programming Entity Framework 2ed)和各种在线资源都说有性能提升,但我没有找到任何概述何时不预编译的内容(除了你不能返回匿名类型的事实,所以没有投影)。
编辑:关于已编译查询的良好背景文章:预编译 LINQ 查询
确定何时(或不)在应用程序中预编译 Linq 查询的最佳实践是什么?