C# 在Dapper中传递模板对象中的输出参数
我有带输入和输出参数的存储过程。我有单独的输入类和输出类。因此,我希望使用模板对象创建动态参数,而不是添加每个属性 例如:C# 在Dapper中传递模板对象中的输出参数,c#,.net,dapper,dynamicparameters,C#,.net,Dapper,Dynamicparameters,我有带输入和输出参数的存储过程。我有单独的输入类和输出类。因此,我希望使用模板对象创建动态参数,而不是添加每个属性 例如: public class StudentInput { public StudentInput() { this.StudentId = 1; } public int StudentId {get; set} } public class StudentOutput { public string StudentName {get; set;} publ
public class StudentInput {
public StudentInput() {
this.StudentId = 1;
}
public int StudentId {get; set}
}
public class StudentOutput {
public string StudentName {get; set;}
public string FavSubject {get; set;}
public int Grade {get; set;}
public int YearOfJoining {get; set;}
}
我有一个存储过程[SP_GetStudentData]
,它将StudentId作为输入,并返回StudentName、FavSubject、Grade和YearOfJoining
使用Dapper,我编写了以下代码
DynamicParameters ip = new DynamicParameters(new StudentInput());
DynamicParameters op = new DynamicParameters(new StudentOutput());
ip.AddDynamicParameters(op);
//这是一个问题。我如何告诉Dapper op是一个输出参数对象?如何将ParameterDirection输出添加到此对象中的每个属性?
SqlMapper.ExecuteSP(connection, SP_GetStudentData, ip, CommandType.StoredProcedure)
问题是SQL Server只能将标量对象作为输出参数返回。因此,无法将输出参数映射到
StudentOutput
类。只需将所需的值作为resultset返回(在SP中使用SELECT语句),然后将该resultset映射到类
var result = connection.Query("SP_GetStudentData @studentId", new { studentId = (new StudentInput()).StudentId }, commandType:StoredProcedure)