Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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#代码运行存储过程时出错_C#_Asp.net_Sql Server_Entity Framework - Fatal编程技术网

尝试从我的C#代码运行存储过程时出错

尝试从我的C#代码运行存储过程时出错,c#,asp.net,sql-server,entity-framework,C#,Asp.net,Sql Server,Entity Framework,我有以下存储过程: CREATE PROCEDURE ListQuestionIds @ExamId int AS BEGIN SELECT Question.QuestionUId FROM Objective INNER JOIN ObjectiveDetail ON ( Objective.objectiveId = ObjectiveDetail.objectiveId ) INNER JOIN ObjectiveTopic

我有以下存储过程:

CREATE PROCEDURE ListQuestionIds
    @ExamId int
AS
BEGIN

    SELECT Question.QuestionUId
    FROM Objective
    INNER JOIN ObjectiveDetail
        ON ( Objective.objectiveId = ObjectiveDetail.objectiveId )
    INNER JOIN ObjectiveTopic
        ON ( ObjectiveDetail.ObjectiveDetailId = ObjectiveTopic.ObjectiveDetailId )
    INNER JOIN Problem
        ON ( ObjectiveTopic.SubTopicId = Problem.SubTopicId )
    INNER JOIN Question
        ON ( Problem.ProblemId = Question.ProblemId )
    WHERE Objective.examId = @ExamId;

END;
var b = db.Database.SqlQuery<string>("dbo.ListQuestionIds", 1);
我使用的是EF6.1,我有一个db上下文。下面是我如何尝试调用存储过程:

CREATE PROCEDURE ListQuestionIds
    @ExamId int
AS
BEGIN

    SELECT Question.QuestionUId
    FROM Objective
    INNER JOIN ObjectiveDetail
        ON ( Objective.objectiveId = ObjectiveDetail.objectiveId )
    INNER JOIN ObjectiveTopic
        ON ( ObjectiveDetail.ObjectiveDetailId = ObjectiveTopic.ObjectiveDetailId )
    INNER JOIN Problem
        ON ( ObjectiveTopic.SubTopicId = Problem.SubTopicId )
    INNER JOIN Question
        ON ( Problem.ProblemId = Question.ProblemId )
    WHERE Objective.examId = @ExamId;

END;
var b = db.Database.SqlQuery<string>("dbo.ListQuestionIds", 1);
var b=db.Database.SqlQuery(“dbo.listQuestionId”,1); 它给了我一个错误,说它需要参数@ExamId,但没有提供任何参数

有人能告诉我我做错了什么吗?

你必须使用

SqlParameter param = new SqlParameter("@ExamId", 1);
db.Database.ExecuteSqlCommand("dbo.ListQuestionIds",param);
或者你也可以使用

db.Database.SqlQuery<string>("exec dbo.ListQuestionIds @ExamId",1);
db.Database.SqlQuery(“exec dbo.ListQuestionIds@ExamId”,1);

这应该可以解决您的问题

 db.Database.SqlQuery<string>("dbo.ListQuestionIds @ExamId", 
new SqlParameter { ParameterName = "ExamId", Value = 1 });
db.Database.SqlQuery(“dbo.ListQuestionIds@ExamId”,
新的SqlParameter{ParameterName=“ExamId”,值=1});