从SQL查询将属性返回到类列表时出现问题

时间:2019-03-24 05:33:33

标签: c# sql sql-server dapper

我尝试使用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部分没有错误。我不确定此时断开连接的位置。

我检查了属性名称,以确保它们与列名称对齐。它们不仅如此,而且我有两个过程可以使用相同的值向同一表中添加和删除信息,这也有效。

所以我可以添加和删除信息,只是不从应用程序中检查它...

编辑:

为以后的补充深表歉意,并感谢您花费所有时间来提供帮助。不幸的是,我在其他地方发现了一个语法错误,该错误解决了我的问题,这真是一个奇怪的问题,它将为您服务...

尽管根本原因很少,但我似乎无法删除我的问题。

1 个答案:

答案 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();
            }
}