![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Есть такой код:
Здесь функция возвращает тип object так что при возврате SqlDataReader происходит неявное приведение типа, я так понял, это и закрывает объект DataReader, и я не могу дальше читать данные... Как вернуть объект грамотно, нашёл инфу про SqlPipe в MSDN. По описанию вроде SqlPipe должен решать проблем, но описание какое-то скудное и я не пойму куда конкретно с помощью Pipe можно вернуть результаты. Как сделать грамотно вобщем, вот вопрос? -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
||||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
это и закрывает объект DataReader (поясню - созданный ридер не содержит в себе результатов, они достаются по живому соединению один за другим) вполне нормально вызвращать ридер из метода с обязательством закрыть его после использования твой код не позволит это сделать нормально, придётся немного изменить выглядеть всё может примерно так
Это сообщение отредактировал(а) mihryak - 13.8.2009, 11:49 |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
1)Вы имеете ввиду что надо убрать using и все вызовы Close() из метода ExecuteQuery и обернуть в using сам вызов метода, чтобы была возможность работать с DataReader пока соединение не закрыто?
2)Насчёт ORM, может мне прям здесь в методе ExecureReader() просто перелить DataReader в массив объектов? (ресурсо-затратное это дело, конечно...) Добавлено @ 12:13
Обёртка в using вызываемого метода обеспечивает закрытие коннекта, открываемого в вызываемом методе? Это сообщение отредактировал(а) ДобренькийПапаша - 13.8.2009, 12:14 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
1)Вы имеете ввиду что надо убрать using и все вызовы Close() из метода ExecuteQuery и обернуть в using сам вызов метода, чтобы была возможность работать с DataReader пока соединение не закрыто?
2)Насчёт ORM, может мне прям здесь в методе ExecureReader() просто перелить DataReader в массив объекто? (ресурсо-затратное это дело, конечно...) КХМ, извиняюсь за непроизвольные повторы))) Это сообщение отредактировал(а) ДобренькийПапаша - 13.8.2009, 12:06 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Bestoloch |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.6.2009 Репутация: нет Всего: нет |
Я чтобы не мучить себя использую сборку Microsoft.ApplicationBlocks.Data
найти бинарник и исходники можно здесь Это сообщение отредактировал(а) Bestoloch - 13.8.2009, 13:03 |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
конечно же нет посмотри на мой код внимательнее, порядок таков: - в юзинге создаётся соединение - вложенным юзингом создаётся ридер с использованием созданного соединение - данные забираются из ридера - ридер закрывается своим юзингом (вложенным) - соединение закрывается своим юзингом |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |