C# 使用EntityFramework 6获取EXEC sp_helptext的结果
是否有任何方法可以获得此c#命令的结果(使用实体框架6):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
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());
}