Проблема возврата свойств в список классов из запроса SQL - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь запросить SQL-сервер с помощью Dapper и заставить его вернуть список объектов класса со значениями столбцов в качестве соответствующих свойств для каждого объекта.У меня есть класс с именем 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-сервере

    Select * from LeaveCalendar
    Where ID = 54 and Date_ = '20191011'

например .. и там работает нормально.Итак, у меня есть два других запроса, которые работают, и, насколько я могу судить, ошибок в части SQL нет.Я не уверен, где происходит отключение в этот момент.

Я проверил имена свойств, чтобы убедиться, что они совпадают с именами столбцов.Они не только работают, но у меня есть две процедуры для добавления и удаления информации в одну и ту же таблицу с использованием тех же значений, которые также работают.

Поэтому я могу добавлять и удалять информацию, просто не проверяя ее из приложения...

Редактировать:

Приносим извинения за поздние добавления и спасибо за то, что вы все потратили на помощь.К сожалению, в другом месте я нашел синтаксическую ошибку, которая решила мои проблемы, и удивительно, что свежие глаза сделают для вас ...

Кажется, я не могу удалить свой вопрос, несмотря на тривиальную корневую причину.

1 Ответ

0 голосов
/ 24 марта 2019
  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();
            }
}
...