我已经看到它多次提到你应该在实体框架中使用编译查询,因为它可以提高效率,就像在 SQL Server 中编译和缓存存储过程一样。
显然,编译查询有两个版本,第一个是CompiledQuery
,据我了解,它只适用于ObjectContext
和自动编译的查询,同时适用于DbContext
和ObjectContext
。
那么编译查询在哪些版本的 EF 中工作以及在什么 API 上下文中工作?
我已经看到它多次提到你应该在实体框架中使用编译查询,因为它可以提高效率,就像在 SQL Server 中编译和缓存存储过程一样。
显然,编译查询有两个版本,第一个是CompiledQuery
,据我了解,它只适用于ObjectContext
和自动编译的查询,同时适用于DbContext
和ObjectContext
。
那么编译查询在哪些版本的 EF 中工作以及在什么 API 上下文中工作?
.NET 4.5 是第一个支持自动编译和缓存的版本。从编译查询文档中:
从 .NET Framework 4.5 开始,自动缓存 LINQ 查询。但是,您仍然可以使用已编译的 LINQ 查询来降低以后执行的成本,并且已编译的查询可以比自动缓存的 LINQ 查询更有效。请注意,将 Enumerable.Contains 运算符应用于内存集合的 LINQ to Entities 查询不会自动缓存。也不允许在编译的 LINQ 查询中参数化内存中的集合。
自CompiledQuery
.NET 3.5 sp1 起就支持手动编译的查询。