text. database . sqlquery与SQL在管理工作室
本文关键字:SQL 管理 管理工作 工作室 sqlquery database double text | 更新日期: 2023-09-27 18:16:36
我有一个脚本,我从EF 6.1上下文运行:
using (var context = new Entities())
{
context.Database.CommandTimeout = 120;
var result = context.Database.SqlQuery<double?>(
sqlCommandString,
new SqlParameter("since", since),
new SqlParameter("until", until),
new SqlParameter("p", p)
).FirstOrDefault();
}
我注意到,如果我在Management Studio中使用完全相同的参数运行脚本,它的执行时间为40毫秒,而使用上面的代码在控制台应用程序中运行它,它会抛出超时异常。
连接字符串是正确的,其他脚本运行良好(较慢,但至少他们返回)。
我错过了什么?是否有另一种使用EF执行标量命令而不实际映射存储过程的方法?
直接从代码执行SQL时,检查脚本中的制表符和空格。
如果代码是多行并且保持缩进,则所有制表符和空格都将随命令一起发送。运行EF中的代码将它包装在sp_executesql中,所有的制表符和空格都变得一团糟。
:
if(true)
{
if(true)
{
string sqlCommand = @"
SELECT * FROM (
SELECT * FROM tblA
) A
";
}
}
:
if(true)
{
if(true)
{
string sqlCommand =
@"
SELECT * FROM (
SELECT * FROM tblA
) A
";
}
}