C# 如何在MVC5中使用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

我在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方法从存储过程中获取返回值

我已经粘贴了我使用过的代码示例

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类。请帮助我,如何得到我期望的结果在它。