为什么LINQ发送sp_executesql而不是直接执行SQL?

usr*_*usr 8 sql linq-to-sql

对于eaxmple,LINQ to SQL发送以下内容:

exec sp_executesql 
N'SELECT [t0].[HomeID], 
  [t0].[Bedrooms], 
  [t0].[ImageURL], 
  [t0].[Price], 
  [t0].[Available], 
  [t0].[Description]
FROM 
  [dbo].[Homes] AS [t0]
WHERE 
  ([t0].[Description] LIKE @p0) AND 
    ([t0].[Available] = @p1) AND 
    ([t0].[Price] >= @p2) AND ([t0].[Price] <= @p3)
ORDER BY 
  [t0].[Price] DESC',
N'@p0 nvarchar(4000),@p1 int,@p2 int,@p3 int',
@p0=N'%private%',
@p1=1,
@p2=200000,
@p3=750000
Run Code Online (Sandbox Code Playgroud)

为什么使用sp_executesql?

Ada*_*ski 11

此表示法允许运行时编译的TSQL语句重用不同的参数; 即语句只编译一次,提高了效率.