C# 如何在MVC5中使用invoke方法从存储过程中获取列值
我在ASP.NETMVC5中使用了getMethod.Invoke方法来执行存储过程。方法“GetStoredProcedure”能够执行存储过程,但不能从存储过程中获得确切的返回值(ID及其名称)。 我从EF获得了以下结果,而不是列表值(ID及其名称)“{System.Data.Entity.Core.Objects.ObjectResult`1[EF.Data.SaveTEST1_Result]}System.Linq.IQueryable{System.Linq.EnumerableQuery}” 请帮助我如何在EF ASP.NET MVC 5中使用invoke方法从存储过程中获取返回值 我已经粘贴了我使用过的代码示例C# 如何在MVC5中使用invoke方法从存储过程中获取列值,c#,asp.net-mvc,entity-framework-6,C#,Asp.net Mvc,Entity Framework 6,我在ASP.NETMVC5中使用了getMethod.Invoke方法来执行存储过程。方法“GetStoredProcedure”能够执行存储过程,但不能从存储过程中获得确切的返回值(ID及其名称)。 我从EF获得了以下结果,而不是列表值(ID及其名称)“{System.Data.Entity.Core.Objects.ObjectResult`1[EF.Data.SaveTEST1_Result]}System.Linq.IQueryable{System.Linq.EnumerableQue
public object GetStoredProcedure(string storedProcedure, object[] parameters)
{
Type contextType = context.GetType();
MethodInfo getMethod = contextType.GetMethod(storedProcedure);
var result = getMethod.Invoke(context, parameters);
return result;
}
以及存储过程:
CREATE PROCEDURE SaveTEST1
(@id INT, @name VARCHAR(5))
AS
BEGIN
DECLARE @MaxID INT
SELECT @MaxID = MAX(ID)
FROM TEST1
INSERT INTO TEST1
VALUES(@MaxID, @name)
SELECT ID, Name
FROM TEST1
WHERE ID = @MaxID
END
注意:我使用的是存储库模式和反射类。
我希望以上的解释足以解释如何获得预期结果。这与asp.net-MVC毫无关系。请检查您的过程是否返回数据,是的,它会在SQL查询窗口中返回值。如果您可以提供一段代码,该代码可以正常工作且不使用反射,但可以以常规方式访问EF,这将大大澄清问题。John,如果我以常规方式使用EF,则不会使用repository类,我的模式是使用repository类。请帮助我,如何得到我期望的结果在它。