简体   繁体   English

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

[英]Error when trying to run a stored procedure from my C# code

I have the following stored procedure: 我有以下存储过程:

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;

I am using EF6.1 and I have a db context. 我正在使用EF6.1,并且具有数据库上下文。 Here is how I am trying to call the stored procedure: 这是我尝试调用存储过程的方式:

var b = db.Database.SqlQuery<string>("dbo.ListQuestionIds", 1);

It's giving me an error saying it expects the parameter @ExamId but none is supplied. 给我一个错误,说它期望参数@ExamId,但未提供任何参数。

Can someone tell me what I am doing wrong? 有人可以告诉我我在做什么错吗?

This should solve you problem 这应该可以解决您的问题

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

you have to use 你必须使用

SqlParameter param = new SqlParameter("@ExamId", 1);
db.Database.ExecuteSqlCommand("dbo.ListQuestionIds",param);

or you can also use 或者你也可以使用

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM