Dapper QueryAsync не возвращает некоторые строки SQL при использовании UNION ALLC#

Место общения программистов C#
Ответить
Anonymous
 Dapper QueryAsync не возвращает некоторые строки SQL при использовании UNION ALL

Сообщение Anonymous »

Я конвертирую API Visual Basic в .NET 8, используя тот же запрос SQL с теми же параметрами, и заметил, что одна конкретная строка не отображается в объекте ответа.
В запросе используется UNION ALL, а строка существует только во втором операторе SELECT:

Код: Выделить всё

SELECT
A.Appointment_Id,
A.Appointment_Date,
-- other columns
FROM Appointments A (NOLOCK)
LEFT JOIN Some_Table ST (NOLOCK) ST.Id = A.Appointment_Id
-- more tables using LEFT JOIN
WHERE A.Appointment_Date BETWEEN '07/01/2024 00:00:00' AND '07/31/2024 23:59:59'

UNION ALL

SELECT
DA.Appointment_Id,
DA.Appointment_Date,
-- other columns
FROM Deleted_Appointments DA (NOLOCK)
LEFT JOIN Some_Table ST (NOLOCK) ST.Id = DA.Appointment_Id
-- more tables using LEFT JOIN
WHERE DA.Appointment_Date BETWEEN '07/01/2024 00:00:00' AND '07/31/2024 23:59:59'
Код C#, использующий QueryAsync Dapper для получения данных:

Код: Выделить всё

public async Task GetAppointments(/* parameters */)
{
// my SQL query

using var con = connectionFactory.CreateConnection();
var result = await con.QueryAsync(sql.ToString());

return result.ToList();
}
Я пробовал использовать foreach для перебора каждой строки и проверки правильности их возврата, но отсутствующая строка полностью пропускается. Я также пробовал использовать QueryMultipleAsync, но результат остался прежним.
Я сравнил тот же запрос с запросом из Visual Basic API, и они оба отображают его так, как должно при выполнении. в SSMS Microsoft.
Реализация VB также возвращает его правильно.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -union-all
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»