我尝试使用Dapper查询SQL Server,并使其返回具有列值作为每个对象的匹配属性的类对象列表。我有一个名为LeaveInfo的类,具有以下属性:
ID,姓名,日期,休假,TDY,约会,不可用
和带有匹配列(名称除外)的SQL表。我查询的代码是:
public List<LeaveInfo> getLeaveInfo(string id, string date)
{
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.ConnectStr("Schedules")))
{
return connection.Query<LeaveInfo>("dbo.LeaveCalendar_GetLeave @ID, @Date_",
new { ID = id, Date_ = date }).ToList();
//return connection.Query<Person>("dbo.Personnel_GetShift @Shift_", new { Shift_ = shift_ }).ToList();
//return connection.Query<Truck>("dbo.Trucks_GetTrucks").ToList();
}
}
SQL过程被调用
Create Procedure LeaveCalendar_GetLeave
@ID VARCHAR(2),
@Date_ Date
As
Begin
Set NoCount on
Select * from LeaveCalendar
Where ID = @ID and Date_ = @Date_
End
代替返回所有列,它仅返回ID和Date_。 注释掉的代码是两个相似的查询,它们执行相同的操作并完全正确地工作,并返回其各自类的所有属性值。
我已经在SQL Server中手动查询了它
Select * from LeaveCalendar
Where ID = 54 and Date_ = '20191011'
例如。 它在那里工作正常。所以我有另外两个有效的查询,据我所知,SQL部分没有错误。我不确定此时断开连接的位置。
我检查了属性名称,以确保它们与列名称对齐。它们不仅如此,而且我有两个过程可以使用相同的值向同一表中添加和删除信息,这也有效。
所以我可以添加和删除信息,只是不从应用程序中检查它...
编辑:
为以后的补充深表歉意,并感谢您花费所有时间来提供帮助。不幸的是,我在其他地方发现了一个语法错误,该错误解决了我的问题,这真是一个奇怪的问题,它将为您服务...
尽管根本原因很少,但我似乎无法删除我的问题。
答案 0 :(得分:0)
public List<LeaveInfo> getLeaveInfo(string id, string date)
{
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.ConnectStr("Schedules")))
{
var param = new DynamicParameters();
param.Add("@ID", id, DbType.String, ParameterDirection.Input);
param.Add("@Date_", date, DbType.String, ParameterDirection.Input);
return connection.Query<LeaveInfo>("dbo.LeaveCalendar_GetLeave", param, commandType: CommandType.StoredProcedure).ToList();
//return connection.Query<Person>("dbo.Personnel_GetShift @Shift_", new { Shift_ = shift_ }).ToList();
//return connection.Query<Truck>("dbo.Trucks_GetTrucks").ToList();
}
}