Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# context.Database.SqlQuery中的标量命令<;双倍?>;在ManagementStudio中VSSQL_C#_Sql_Entity Framework - Fatal编程技术网

C# context.Database.SqlQuery中的标量命令<;双倍?>;在ManagementStudio中VSSQL

C# context.Database.SqlQuery中的标量命令<;双倍?>;在ManagementStudio中VSSQL,c#,sql,entity-framework,C#,Sql,Entity Framework,我有一个从EF 6.1上下文运行的脚本: using (var context = new Entities()) { context.Database.CommandTimeout = 120; var result = context.Database.SqlQuery<double?>( sqlCommandString, new SqlParameter("since", since), new SqlPara

我有一个从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();
}
使用(var context=new Entities())
{
context.Database.CommandTimeout=120;
var result=context.Database.SqlQuery(
sqlCommandString,
新的SqlParameter(“自”,自),
新的SqlParameter(“直到”,直到),
新的SqlParameter(“p”,p)
).FirstOrDefault();
}
我注意到,如果在ManagementStudio中使用完全相同的参数运行脚本,它的执行时间为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
";
    }
}

if(true)
{
    if(true)
    {
        string sqlCommand = @"
            SELECT * FROM (
                SELECT * FROM tblA
            ) A
        ";
    }
}
if(true)
{
    if(true)
    {
        string sqlCommand = 
@"
SELECT * FROM (
    SELECT * FROM tblA
) A
";
    }
}