我有一个存储过程,我想在其中返回输出值并在我通过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文件中的表后,它显示如下:
当我导入函数时,我选择无作为回报。
我通过以下代码访问它:
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;
}
}
}
在运行时,它显示以下异常:
在错误列表中,还会出现以下异常:
答案 0 :(得分:0)
是。我解决了。
我更改了存储过程的最后一行:
select @ReturnValue= SCOPE_IDENTITY()
更新模型后,在映射部分中,我刚刚将结果列绑定中的ReturnValue
添加到。只需在写出out值后按Enter键。请勾选相邻的输出值