powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Dapper странно возвращает множественный набор
9 сообщений из 9, страница 1 из 1
Dapper странно возвращает множественный набор
    #39125158
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Подскажите в чем может быть дело.

Код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
            var sql = @"select id from MySchema.[ElemType] where Upper (Handler) like @handler1
                             select id from MySchema.[ElemType] where Upper (Handler) like @handler2";

            var res = conn.QueryMultiple(sql, new {handler1 = FirstName, handler2 = SecondName});

            var handler1 = res.Read<int>().ToArray();
            var handler2 = res.Read<int>().ToArray();



в итоге handler1 и handler2 имеют одинаковое значение - первого элемента (handler1).
Хотя я смотрю в профайлере, из базы действительно возвращается два набора данных, как и положено.

Я так понимаю, что res.Read почему-то берет только первый набор данных с int, а не по порядку. А я ожидал, что этот метод отработает по принципу энумератора: будет возвращать наборы последовательно. Получается я ошибаюсь.

Подскажите как нужно правильно. Не нашел примера со схожей проблемой на странице Даппера https://github.com/StackExchange/dapper-dot-net.

PS.QueryMultiple точно работает, т.к. если запрашивать разные виды сущностей, то все работает. Т.е. так все ок:
Код: c#
1.
2.
            var handler1 = res.Read<int>().ToArray();
            var myOtherElement = res.Read<OtherType>().ToArray();
...
Рейтинг: 0 / 0
Dapper странно возвращает множественный набор
    #39125176
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте одним запросом, union all
...
Рейтинг: 0 / 0
Dapper странно возвращает множественный набор
    #39125201
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

ну можно, да :)
но мне просто интересно все равно. Что я не так делаю. Может не раз еще пригодится.
...
Рейтинг: 0 / 0
Dapper странно возвращает множественный набор
    #39125205
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekWinnipuh,

ну можно, да :)
но мне просто интересно все равно. Что я не так делаю. Может не раз еще пригодится.

Видимо они читают один набор. Много наборов в общем случае могут иметь разные наборы полей и т.д.
...
Рейтинг: 0 / 0
Dapper странно возвращает множественный набор
    #39125246
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Просто через unionall, я думаю, нельзя расчитывать на порядок строк.
Т.е. ВСЕГДА ли
Код: c#
1.
2.
3.
select name1
union all 
select name2


вернется именно в этом порядке ?

Я бы не рисковал, и поэтому бы делать что-то типа такого:

Код: c#
1.
2.
3.
select 1 as id, Name1 as Name
union all 
select 2, Name2



и затем в программе извлекать данные ориентируясь на заданный ID.

Все это мне кажется чуть сложнее, чем просто послать два набора и последовательно их считать :)
...
Рейтинг: 0 / 0
Dapper странно возвращает множественный набор
    #39125280
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekПросто через unionall, я думаю, нельзя расчитывать на порядок строк.
почитай как устроен SQL. Там написано что порядок есть только если он явно задан. т.е. order by

Т.е. ни в одном SQL запросе не надо ожидать какого-то порядка, если явно его не указал. Кури Дейта и теорию РСУБД.
...
Рейтинг: 0 / 0
Dapper странно возвращает множественный набор
    #39125299
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

вооот. и я о том же.

Однако - мне кажется это заявление относится в большей степени к Табличным данным.
А вот насчет данных, которые подготовлены искуственно с помощью union all я, все же, думаю порядок скорее всего будет тот, что задан.

Однако я и не хочу рисковать. Об этом я и написал чуть выше. Что предпочел бы, все же, сделать два отдельных запроса - чем делать через union all.
...
Рейтинг: 0 / 0
Dapper странно возвращает множественный набор
    #39125324
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekОднако - мне кажется это заявление относится в большей степени к Табличным данным.
А вот насчет данных, которые подготовлены искуственно с помощью union all я, все же, думаю порядок скорее всего будет тот, что задан.
Задан кем? Ты его не задал, поэтому не ожидай что он будет. "скорее всего будет" это ты как понимаешь? Скорее всего я уже уволюсь к тому времени когда сглючит?
ProBiotekОднако я и не хочу рисковать. Об этом я и написал чуть выше. Что предпочел бы, все же, сделать два отдельных запроса - чем делать через union all.
есть
Код: sql
1.
2.
3.
4.
select name1
union all 
select name2
order by ...
...
Рейтинг: 0 / 0
Dapper странно возвращает множественный набор
    #39125613
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
авторПросто через unionall, я думаю, нельзя расчитывать на порядок строк.
Т.е. ВСЕГДА ли
select name1
union all
select name2

вернется именно в этом порядке ?

Это известная тема. Выше коллега уже написал варианты.

Здесь ключевай фраза "в этом порядке", при этом порядок не указан, а только в голове автора.
Нужно указывать порядок.

К тому примеру:

Код: sql
1.
2.
3.
4.
5.
select * from 
(select name1 as 'name', 1 as 'mumu'
union all 
select name2 as 'name', 2 as 'mumu') t
order by mumu
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Dapper странно возвращает множественный набор
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]