Dapper를 사용하여 저장 프로 시저를 호출하려고합니다. 지금까지 본 모든 코드는 저장 프로 시저 매개 변수를 @ 문자로 지정하여 수행합니다. 이는 간단히 모델 클래스를 정의하여 Dapper의 Query 또는 Execute 메소드로 전달할 수 없다는 것을 의미합니다. 모델 인스턴스를 다시 변환하면 시간과 메모리가 낭비되는 것처럼 보입니다. 이게 내가 정말로해야 할 일이야?
예를 들어, 아래 코드는 모델 인스턴스를 허용합니다. 모델에는 sp_GetUser 테이블의 모든 속성이 있습니다. Dapper는 호출 할 때 저장 프로 시저의 매개 변수에 해당 모델 속성을 전달해야합니다. 이 경우 또는 'param'매개 변수에 전달할 개체를 실제로 정의해야합니까?
public IList<User> GetUsers(UserSP user)
{
using (var cn = new SqlConnection(ConnectionString))
{
var users = cn.Query<User>("sp_GetUsers",
param: new
{
@Id = user.Id,
@NAme = user.Name,
@Age = user.Age
},
commandType: CommandType.StoredProcedure).ToList();
return users;
}
}
이 같은 것을 시도해보십시오.
클래스
public class ReportIndex
{
public int SlideNumber { get; set; }
public string ChartName { get; set; }
public string SheetName { get; set; }
}
수업을 dapper로 채우다.
public List<ReportIndex> GetReportIndex(int reportId)
{
List<ReportIndex> reportIndex = null;
using (var conn = new SqlConnection(connString))
{
conn.Open();
var p = new DynamicParameters();
p.Add("@ReportId", reportId);
reportIndex = conn.Query<ReportIndex>("sp_ReportGetReportIndex",
p,
commandType: CommandType.StoredProcedure).ToList();
}
return reportIndex;
}