Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Очень странная ошибка вываливается иногда у клиента. Я у себя на сервере добиться появления этой ошибки не могу. Код: c# 1. 2. 3. 4. 5. 6. 7. Field1 как вы видите выбирается в SQL-Запросе. Впечатление такое что SQL-Запрос возвращает 0 записей, а ридер таки пытается что-то там прочитать. Я другого объяснения не нахожу. Вопрос в том: Как такое может быть или если не в этом дело, то в чём? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:21 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
M234Впечатление такое что SQL-Запрос возвращает 0 записейгляньте профилером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:22 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
M234, как reader создаётся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:23 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
skyANA, Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:29 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
ПаганельM234Впечатление такое что SQL-Запрос возвращает 0 записейгляньте профилером Во-первых у меня и ошибки то этой не появляется. Во-вторых если даже никаких результатов не возвращается(это я симулировал), то while (sql_rdr.Read()) ничего читать не должно. Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:32 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
а так? Код: c# 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:34 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
M234Я у себя на сервере добиться появления этой ошибки не могунадо обратиться к тестировщикам, пусть найдут как повторить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:36 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
M234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:39 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
да, а что такое DBNullIs ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:42 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Паганельа так? Код: c# 1. 2. 3. 4. Я не знаю. У меня всё работает. Хоть так хоть сяк. Ладно, сейчас "обращусь к тестировщикам" в смысле пойду тестировать... ;) Я думал может есть какая теория под это дело... Может if (sql_rdr.HasRows) спасёт отца русской демократии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:42 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Паганельда, а что такое DBNullIs ? Ничего страшного: Код: c# 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:44 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldeveloperM234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :) http://codearticles.ru/home/articleview/1383 Код: c# 1. 2. 3. 4. 5. На кой ляд какие-то еще педали? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:57 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
M234skyANA, Код: c# 1. Хм. А команда случаем не singleton? Может параллельный запрос меняет текст команды? Может у Вас что-то static? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:06 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldevelopercooldeveloperM234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :) http://codearticles.ru/home/articleview/1383 Код: c# 1. 2. 3. 4. 5. На кой ляд какие-то еще педали? :)Предлагаете педали ТС поменять на Ваши педали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:09 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldeveloperM234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :) Это древний говнокод который был написан ажно в 2007 году на .Net 2.0 и который до сих пор проблем не вызывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:13 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
skyANAПредлагаете педали ТС поменять на Ваши педали? Если маппер - это педали, я могу тебе, разве что, тебе посочувствовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:14 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldeveloperskyANAПредлагаете педали ТС поменять на Ваши педали? Если маппер - это педали, я могу тебе, разве что, тебе посочувствовать Ну это смотря как посмотреть. Если по Фаулеру: Data Mapper , - то 1. Ваш маппер не является Data Mapper-ом по Фаулеру; 2. Что-то я не заметил в коде ТС доменных (бизнес) объектов. Так что ему надо либо всё нафиг зарефакторить, либо оставить свои педали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:27 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
M234cooldeveloperM234, возьми нормальный маппер для фетчинга IDataReader => IEnumerable<T>, гляжу на твой гавнокод и меня начинает тошнить :) Это древний говнокод который был написан ажно в 2007 году на .Net 2.0 и который до сих пор проблем не вызывал.Что насчёт синглтонов и статиков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:28 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
skyANAНу это смотря как посмотреть. Если по Фаулеру: Data Mapper , - то 1. Ваш маппер не является Data Mapper-ом по Фаулеру; Смотреть никуда не нужно, нужно почитать про такие известные мапперы, как AutoMapper и ExpressionMapper и сделать соответствующие выводы для задач преобразования экземпляров классов к различным типам. skyANA2. Что-то я не заметил в коде ТС доменных (бизнес) объектов. Маппер маппит экземпляр класса одного типа в другой. Он ничего не знает и не должен знать о доменных или не домменных объектах. skyANAТак что ему надо либо всё нафиг зарефакторить, либо оставить свои педали. Ему нужно убрать гавнокод и вставить одну строчку с маппером. Больше ему ничего делать не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:34 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
skyANAЕсли по Фаулеру: Data Mapper Фаулер не дает библейское определение маппера, он просто его рассматривает применительно к БД. Что нам и говорит название главы: ...A layer of Mappers (473) that moves data between objects and a database while keeping them independent of each other and the mapper itself. ...You still need to transfer data between the two schemas, and this data transfer becomes a complexity in its own right. If the in-memory objects know about the relational database structure, changes in one tend to ripple to the other. Мапперы же используется и в других задачах, никак не связанных с базами данных. Особенно вкусно они применяются в SOA ориентированных средах для трансфера объектов из одного состояния в другое. Так что немного глуповато звучит "Маппер по Фаулеру" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:46 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldeveloper, у Фаулера есть маппер , а есть дата маппер . А теперь смотрим название Вашего рецепта: "Рецепт - DataMapper". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 13:50 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
skyANAcooldeveloper, у Фаулера есть маппер , а есть дата маппер . А теперь смотрим название Вашего рецепта: "Рецепт - DataMapper". 1. Не вижу противоречий. DataMapper - это мой маппер с моим названием, которое я ему дал. Маппер для данных, данные могут быть какими угодно. Есть еще Expression маппер - так что, будем говорить о необходимости наличия Expression выражений в коде? Есть Auto маппер , тут вообще непонятно к чему оно относится - к автомобилям, наверное. 2. Ссылка на просто "Mapper" вообще левая, как я понял. Она не относится к задаче перемапливания свойств одного экземпляра на свойства другого. Поэтому, прежде чем пихать Фаулера куда ни попадя, сначала разберись с тематикой и контекстом применения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 14:10 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldeveloper, дак и я не вижу противоречий. Я же писал, что Ваш маппер не является Data Mapper -ом по Фаулеру. Где тут противоречие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 14:15 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
skyANAcooldeveloper, дак и я не вижу противоречий. Я же писал, что Ваш маппер не является Data Mapper -ом по Фаулеру. Где тут противоречие? Противоречние в том, что (повторюсь): 1. Фаулер не дает библейское определение маппера, он просто его рассматривает применительно к БД . 2. Я так и не понял, почему мой маппер не является "дата меппером", о котором пишет Фаулер. Он может работать с любыми объектами, в том числе и доменными. 3. Ты решил понасиловать мне моск? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 14:19 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Поковырял AutoMapper Что то не могу понять зачем кеширование в нутрях происходит IDataReader - жирновато, ну да ладно. а вот за это: Код: c# 1. 2. 3. надо ругать, имхо если его привести в порядок кое где, будет намного быстрей и худей.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 14:30 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Где-то в степиЧто то не могу понять зачем кеширование в нутрях происходит IDataReader - жирновато, ну да ладно. Всё правильно они делают, один раз получают свойство, а все последующие разы свойство достается из словаря. Наподобие вот этого: Рецепт - Emit property set-get value (Алексей К писал, я подпилил немного) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 14:46 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldeveloper, в том то и дело, никаких словарей я не увидел или на что то похожее типа этого Код: c# 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 15:25 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldeveloper, Ну да бог с ним не велика безделица, свою написать на раз проблем нет, может не увидел. В общем то и полез прозекцировать из за этого момента... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 15:31 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, мне лениво изучать их исходники. Лучше возьми коллекцию их нескольких десятков млн элементов и потестрируй на скорость все три маппера. Emit должен всех порвать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 15:33 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
cooldeveloperEmit должен всех порвать. Точно, как же я забыл про Emit. Вот он , дополнил коллекцию мапперов. P.S. Но как по мне, лучше иметь свой класс маппера из пары строк кода, чем тянуть эти левые кодплексовские сборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 15:35 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
[quot cooldeveloper]cooldeveloperP.S. Но как по мне, лучше иметь свой класс маппера из пары строк кода, чем тянуть эти левые кодплексовские сборки. Тут полностью с тобой согласен, не велика важность в этих сборках, тем более если смотреть сточки зрения датамаппера тянут они 90 процентов баласта.Самое главное принцип действия знать - быть вооруженным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 15:43 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Где-то в степитянут они 90 процентов баласта.Самое главное принцип действия знать - быть вооруженным. +1 Тем более реальная разница замечается на десятках миллионах элементов. Как часто ты маппишь такое кол-во данных? У меня еще ни разу таких задач не было. Максимум, несколько десятков тысяч, которые маппятся за секунду и того меньше. Опять же, если нужна небольшая оптимизация и скорострельность, ее можно повысить процентов на 15% за счет кеширования и Emit доступа к свойствам. Просто берем и докручиваем этот Emit к своему мапперу. Лично пробовал, особо сильного профита я не получил, зато гавнокода добавилось немало. Сам зацени на эту жесть: emit Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. Итого, если так важный эти эмитовские копейки, допиливаем. Мне и на классической рефлексии хорошо живется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 15:50 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Где-то в степиcooldeveloper, в том то и дело, никаких словарей я не увидел или на что то похожее типа этого Код: c# 1. 2. 3. 4. А пардон, посыпаю голову пеплом, скачал исходники - более понятно чем рефлектор. реализации Автомаппера идет через Emit кешируется делегат под получаемый тип. все вроде ок.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 17:02 |
|
||
|
IndexOutOfRangeException: Объясните дураку КАК такое вообще может быть?
|
|||
|---|---|---|---|
|
#18+
Где-то в степиболее понятно чем рефлектор Ты рефлектором смотрел код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 17:05 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1358549]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 367ms |

| 0 / 0 |
