我无法取回输出值。我得到以下异常:
执行类型:InvalidOperationException: 执行命令时,参数必须是专有的数据库参数或值。
C# 代码方法
public Student InsertNewStudentApplication(Student student)
{
Student newStudent = null;
SqlParameter returnParam = new SqlParameter()
{
ParameterName = "@newStudentID",
SqlDbType = SqlDbType.Int,
Value = 0,
Direction = System.Data.ParameterDirection.Output
};
var result = m_context.Database.ExecuteSqlCommand("exec usp_MyProcedureName @newStudentID, @name, @schoolID, @localAdd, @localCity, @localState, @localZip, @summerAdd, @summerCity, @summerState, @summerZip, @phoneLocal, @phoneHome, @phoneCell, @email, @gradYear, @gradMajorMinor, @gradSchoolCollege, @TShirtSize, @transferStud, @prevExperience, @leadTransferStud, @fk_interviewID, @resumePath, @picturePath ",
returnParam,
new SqlParameter("@name", student.Name),
new SqlParameter("@schoolID", student.schoolID),
new SqlParameter("@localAdd", student.LocalAdd),
new SqlParameter("@localCity", student.LocalCity),
new SqlParameter("@localState", student.LocalState),
new SqlParameter("@localZip", student.LocalZip),
new SqlParameter("@summerAdd", student.SummerAdd),
new SqlParameter("@summerCity", student.SummerCity),
new SqlParameter("@summerState", student.SummerState),
new SqlParameter("@summerZip", student.SummerZip),
new SqlParameter("@phoneLocal", student.PhoneLocal),
new SqlParameter("@phoneHome", student.PhoneHome),
new SqlParameter("@phoneCell", student.PhoneCell),
new SqlParameter("@email", student.Email),
new SqlParameter("@gradYear", student.GradYear),
new SqlParameter("@gradMajorMinor", student.GradMajorMinor),
new SqlParameter("@gradSchoolCollege", student.GradSchoolCollege),
new SqlParameter("@TShirtSize", student.TShirtSize),
new SqlParameter("@transferStud", student.TransferStud),
new SqlParameter("@prevExperience", student.PrevExperience),
new SqlParameter("@leadTransferStud", student.LeadTransferStud),
new SqlParameter("@fk_interviewID", SqlDbType.Int).Value = student.InterviewID,
new SqlParameter("@resumePath", student.ResumePath),
new SqlParameter("@picturePath", student.PicturePath));
var newStudentID = (int)returnParam.Value;
if (newStudentID <= 0)
{
var tempStudent = new Student { ID = newStudentID };
newStudent = this.FindByID(tempStudent);
}
return newStudent;
}
SQL 存储过程:
ALTER PROCEDURE [dbo].[usp_MyProcedureName]
@newStudentID int out,
@name varchar(255),
@schoolID varchar(255),
@localAdd varchar(255),
@localCity varchar(50),
@localState varchar(50),
@localZip varchar(50),
@summerAdd varchar(255),
@summerCity varchar(50),
@summerState varchar(50),
@summerZip varchar(50),
@phoneLocal varchar(50),
@phoneHome varchar(50),
@phoneCell varchar(50),
@email varchar(255),
@gradYear varchar(50),
@gradMajorMinor varchar(255),
@gradSchoolCollege varchar(255),
@TShirtSize varchar(50),
@transferStud varchar(50),
@prevExperience text,
@leadTransferStud varchar(50),
@fk_interviewID int,
@resumePath varchar(255),
@picturePath varchar(255)
AS
SET NOCOUNT OFF;
BEGIN
INSERT INTO OApp_students
(
name,
schoolID,
localAdd,
localCity,
localState,
localZip,
summerAdd,
summerCity,
summerState,
summerZip,
phoneLocal,
phoneHome,
phoneCell,
email,
gradYear,
gradMajorMinor,
gradSchoolCollege,
TShirtSize,
transferStud,
prevExperience,
leadTransferStud,
fk_interviewID,
resumePath,
picturePath
)
VALUES
(
@name,
@schoolID,
@localAdd,
@localCity,
@localState,
@localZip,
@summerAdd,
@summerCity,
@summerState,
@summerZip,
@phoneLocal,
@phoneHome,
@phoneCell,
@email,
@gradYear,
@gradMajorMinor,
@gradSchoolCollege,
@TShirtSize,
@transferStud,
@prevExperience,
@leadTransferStud,
@fk_interviewID,
@resumePath,
@picturePath
)
set @newStudentID = @@IDENTITY
END