输出参数只能通过RowsAffectedParameter属性进行映射

时间:2014-06-18 08:11:52

标签: c# entity-framework stored-procedures entity-framework-6

我有一个存储过程,我想在其中返回输出值并在我通过Entity Framework访问它的应用程序中访问它。

我的存储过程:

ALTER Procedure [dbo].[Insert_StudentDetails]
(
    @Name varchar(150),
    @City varchar(150),
    @ReturnValue int OUT
)

as
Begin
    --Declare 
    if NOT exists(Select Name  from Student
    WHERE Name=@Name    
    AND City=@City)
    begin
    Insert into Student(Name, City)
    values(@Name, @City)        
    set @ReturnValue=1
    end
    else
    begin
    set @ReturnValue=0
    end
    select @ReturnValue
End

现在右键单击edmx文件中的表后,它显示如下:

enter image description here

当我导入函数时,我选择无作为回报。

我通过以下代码访问它:

 public bool insertstudentdata(Student student)
    {
        using (CollegeDataEntities context = new CollegeDataEntities())
        {
            ObjectParameter ReturnedValue = new ObjectParameter("ReturnValue", typeof(int));
            context.InsertStudentData(student.Name, student.City, ReturnedValue);
            if (Convert.ToInt32(ReturnedValue) == 1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

在运行时,它显示以下异常:

enter image description here

在错误列表中,还会出现以下异常:

enter image description here

1 个答案:

答案 0 :(得分:0)

是。我解决了。

我更改了存储过程的最后一行:

select @ReturnValue= SCOPE_IDENTITY()

更新模型后,在映射部分中,我刚刚将结果列绑定中的ReturnValue添加到。只需在写出out值后按Enter键。请勾选相邻的输出值

enter image description here