Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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# 使用EntityFramework 6获取EXEC sp_helptext的结果_C#_Sql Server_Entity Framework_C# 4.0 - Fatal编程技术网

C# 使用EntityFramework 6获取EXEC sp_helptext的结果

C# 使用EntityFramework 6获取EXEC sp_helptext的结果,c#,sql-server,entity-framework,c#-4.0,C#,Sql Server,Entity Framework,C# 4.0,是否有任何方法可以获得此c#命令的结果(使用实体框架6): var result=\u model.Database.SqlQuery(“EXEC sp\u helptext dbo.AProcedure”,new object()); 我试过替换???以这种方式通过字符串: var result = _model.Database.SqlQuery<string>("EXEC sp_helptext dbo.AProcedure", new object()); var res

是否有任何方法可以获得此c#命令的结果(使用实体框架6):

var result=\u model.Database.SqlQuery(“EXEC sp\u helptext dbo.AProcedure”,new object());
我试过替换???以这种方式通过字符串:

var result = _model.Database.SqlQuery<string>("EXEC sp_helptext dbo.AProcedure", new object());
var result=\u model.Database.SqlQuery(“EXEC sp\u helptext dbo.AProcedure”,new object());

但只获取sql执行的文本:
EXEC sp_helptext dbo.a过程

确定,因为您正在尝试执行系统存储过程,这无法从实体框架轻松完成,所以请使用DbCommand。试试这个

        var entityConnection = MyDbContext.Database.Connection.ConnectionString;
        DbConnection conn = entityConnection;
        ConnectionState initialState = conn.State;

        if (initialState != ConnectionState.Open)
            conn.Open();
        using (DbCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = "sp_helptext";
            cmd.Parameters.Add(new SqlParameter("@name", "dbo.AProcedure"));
            cmd.CommandType = CommandType.StoredProcedure;
            var result = cmd.ExecuteScalar();
        }

我用这个方法来获得程序内容

private string GetProcedureBody(string procedureName)
{
    var data = _model.Database.SqlQuery<string>("exec sp_helptext @name", 
                    new SqlParameter("name", procedureName));
    var procedureLines = data.ToList();
    return string.Join("", procedureLines.ToArray());
}
private string GetProcedureBody(string procedureName)
{
var data=\u model.Database.SqlQuery(“exec sp\u helptext@name”,
新的SqlParameter(“name”,procedureName));
var procedureLines=data.ToList();
返回字符串.Join(“,procedureLines.ToArray());
}

感谢@James Dev提供的帮助和答案。

过程主体与SQL代码相同,而不是结果。
EXEC sp\u helptext procedurename
的结果就是过程主体。我想获取过程主体行。结果变量仅包含发送/执行的sql文本。与模型(edmx)或dbcontext相同。确定,因为您试图执行系统存储过程,所以无法从实体框架轻松完成此操作,所以请使用DbCommand更新答案
private string GetProcedureBody(string procedureName)
{
    var data = _model.Database.SqlQuery<string>("exec sp_helptext @name", 
                    new SqlParameter("name", procedureName));
    var procedureLines = data.ToList();
    return string.Join("", procedureLines.ToArray());
}