我想用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; }
}
用小巧玲瓏填寫課程
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;
}