我有以下存储过程:
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;
我正在使用EF6.1,我有一个db上下文。以下是我尝试调用存储过程的方法:
var b = db.Database.SqlQuery<string>("dbo.ListQuestionIds", 1);
它给了我一个错误,说它需要参数@ExamId但没有提供。
有人能告诉我我做错了吗?
答案 0 :(得分:2)
这可以解决你的问题
db.Database.SqlQuery<string>("dbo.ListQuestionIds @ExamId",
new SqlParameter { ParameterName = "ExamId", Value = 1 });
答案 1 :(得分:0)
你必须使用
SqlParameter param = new SqlParameter("@ExamId", 1);
db.Database.ExecuteSqlCommand("dbo.ListQuestionIds",param);
或者您也可以使用
db.Database.SqlQuery<string>("exec dbo.ListQuestionIds @ExamId",1);