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)