尝试从我的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});