我一直在看 Brent Ozar 的培训视频(对我来说是 SQL Guru),他谈到参数嗅探并说 EF 会这样做,但对于我来说,我无法获得一个有效的示例。我期待看到参数,但它只是用相等而不是@p1、@p2 创建这样的 SQL。
SELECT [p].[Id], [p].[Body], [p0].[Type]
FROM [Posts] AS [p]
INNER JOIN [PostTypes] AS [p0] ON [p].[PostTypeId] = [p0].[Id]
WHERE ([p].[PostTypeId] = 6) AND ([p].[CreationDate] >= '2011-01-01T00:00:00.000')
我通过搭建他的 StackOverflow2013 数据库创建了 DBContext,并在帖子类型上创建了一个外键以获取某种 JOIN。
有谁知道我如何获得使用 EF 进行参数嗅探的示例,因为这每次都会创建一个新的查询计划?
如果我调用存储过程,那么我可以获得参数嗅探。
我的 C# 代码如下
var result = ctx.Posts
.Include(x => x.PostType)
.Where(x => x.PostTypeId == 6 && x.CreationDate >= new DateTime(2013, 01, 01))
.Select(x => new {
Id = x.Id,
Body = x.Body,
Type = x.PostType.Type
}).ToList();