|
|
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Товарищи, Начал разбираться с ADO .NET, так понимаю, что хранение данных в локальной памяти позволяет ускорить работу и не обращаться лишний раз к SQL серверу. Так вот в чем вопрос: Открывается веб - страница, происходит обращение к БД, выбирается некое под-множеество записей (в соответствие с переданными параметрами, состоянием веб сессии и т.п.), их нужно отбразить на странице. Если я заполняю Typed DataSet этими записями: DataTable table = new DataTable("ProductTable"); SqlCommand sqlStr = new SqlCommand("select * from " + Session["TableName"], conn); SqlDataAdapter dataAdapter = new SqlDataAdapter(); dataAdapter.SelectCommand = sqlStr; ProductDataGrid.DataSource = table; dataAdapter.Fill(table); ProductDataGrid.DataBind(); Далее, если мне нужно просто пересортировать или отфильтровать полученный набор данных - мне же не обязательно обращаться к БД, - можно ли эти операции (сортировки, поиска) выполнять над локальной таблицей, загруженной в Typed DataSet? Потому что перезаполнять его я буду только тогда, когда уже понадобится какой-то другой фрагмент. То есть вопрос в том, возможно ли такое вообще (как проверять, загружено уже что-то в локальную таблицу или нет?), и даст ли это прирост скорости? И еще: создавать датасет лучше вручную (на лету) или надо создать некий dataset.xsd в папке App_Code? -там же можно и таблицы и тп.п или опять же лучше создавать/привязывать/заполнять в момент выполенния запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 15:21 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
лучше вообще датасетами не пользоваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 15:39 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
зы лучше вообще датасетами не пользоваться обоснуйте, pls... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 15:56 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Ex_Soft обоснуйте, pls... а что обосновывать, и так всем все давно ясно, что датасеты - это зло. Они извращают ум и толкают на написание галимого кода. Имхо с появлением DLINQ о датасетах вполне можно забыть, тот же RAD теперь возможен и с более прогрессивными технологиями :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 16:28 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
зы датасеты - это зло Ну... Это я уже не первый раз слышу... Однако на это + это получил... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 16:40 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Ну... Это я уже не первый раз слышу... Однако на это + это получил... слушай, иди со своими загадками и ссылками на посты в другое место, утомил. Пиши своими словами, а не чужими цитатами. Мнение пользователя i see для меня не является авторитетным и каких-либо обоснований чтобы поддержать его точку зрения в указанных постах я не увидел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 16:51 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
зыа что обосновывать, и так всем все давно ясно, что датасеты - это зло. Они извращают ум и толкают на написание галимого кода. Имхо с появлением DLINQ о датасетах вполне можно забыть, тот же RAD теперь возможен и с более прогрессивными технологиями :) бугага! а датасет - это такая прогрессивная технология, с появлением которой все забыли о рекордсетах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 17:46 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
пых бугага! а датасет - это такая прогрессивная технология, с появлением которой все забыли о рекордсетах ну, все понемногу эволюционирует :) но связывать свою жизнь с таблицами, обмазанными методами, это плохо. О чем-либо более сложном я даже боюсь тут заикнуться, надо человека подталкивать потихоньку, иначе испугается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 18:01 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
зы эволюционирует Хорошо... В контексте эволюции: что можете предложить? ЭстЪ тариф , франшиза . Они в риске . РискИ в обЪекте . ОбЪектЫ в договоре . Кроме того в договоре ЭстЪ контрагенты со своими адресами , документами , банковскими реквизитами и пр. И все это вываливаецо для вводиловки. Разделить - не имеет смысла. Оператор должен видеть все. Посткольку все взаимосвязанно. Причем с этим необходимо "играться": изменить тариф/франшизу, добавить/удалить риск/обЪект/контрагента и посмотреть что из этого получиться. И только окончательный вариант сохранить в БД. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 18:12 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
любой ORM отлично справится с сохранением дерева данных в одной транзакции, при этом необходимого кода будет буквально одна строка - соранить рутовый объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 18:18 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
зыну, все понемногу эволюционирует :) но связывать свою жизнь с таблицами, обмазанными методами, это плохо. О чем-либо более сложном я даже боюсь тут заикнуться, надо человека подталкивать потихоньку, иначе испугается может все-таки не надо подталкивать? просто мозги вправить на место - и не придется заикаться о сложном... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 18:22 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
пых может все-таки не надо подталкивать? просто мозги вправить на место - и не придется заикаться о сложном... вправляй, у меня на датасеты аллергия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 18:35 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
спасибо, но я тоже не работаю с датасетами :) афтар, на веб-странице надо вытащить из базы только то, что на ней отображается. кешировать данные БД в датасетах или еще где имеет смысл в очень редких случаях, когда данных мало и они очень редко меняются. в этом случае дешевле весь датасет поместить в кеш минут на аццать. и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 18:54 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
пых на веб-странице надо вытащить из базы только то, что на ней отображается Угу... Пон... Только, вот, есть один ньюанс: некоторые значения имеют min && max значение. Опять же - каждому страховому продукту соответствует свой набор обЪектов и рискоф. И т.д. и т.п. И все это нужно учесть/проверить. И что же - прикажете при каждом submit'е при "игре" с параметрами в БД лазить? Не вопрос. Но только вот таких операторов ~1000-1500. Опять же НСИ в БД слегка join'ов с ~5-6 нуна, что бы получить. Да и блокировочник со всеми вытекающими. Ну и, для начала, как все сие добро между postback'ами держать посоветуете? Ну и сохранить. По-людськи. С repeatable read'ом для документов, в случае модификаций. Не спорю: к dataset'у пришли от WinApp, в коем, в свое время, ваялсо обЪект, со всем функционалом. А тут - почти тот же функционал (даже больше). Предлагайте альтернативы - бум рассматривать и тянуцо к свету/знаниям/новым_веяниям _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 22:39 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Ex_Soft ..бла-бла-бла.. все что ты написал не более чем расфуфыренные слова. Не думай, что твоя проблема настолько уникальна, что ты единственный знаешь верное решение. Что такое "блокировочник" и что из него вытекает? я твой старорусский непонимать. А "repeatable read для документов"? Вообще, судя по твоему красочному описанию, страница у тебя должна открываться минуты 2, не иначе. Если это так, то пора сменить работу или позвать в помощь DBA. Если не так, то она вполне переживет пост-беки, сделанные с умом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 22:59 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Угу... Пон... Только, вот, есть один ньюанс: некоторые значения имеют min && max значение. MIN(), MAX(), денормализация Ex_Soft Опять же - каждому страховому продукту соответствует свой набор обЪектов и рискоф. И т.д. и т.п. И все это нужно учесть/проверить. BOL, видимо... :) Ex_SoftИ что же - прикажете при каждом submit'е при "игре" с параметрами в БД лазить? да Ex_SoftНе вопрос. Но только вот таких операторов ~1000-1500. по барабану. то же мне узкое место. Ex_SoftОпять же НСИ в БД слегка join'ов с ~5-6 нуна, что бы получить. детский сад Ex_SoftДа и блокировочник со всеми вытекающими. вытекающее без Кашпировского не рассосется Ex_SoftНу и, для начала, как все сие добро между postback'ами держать посоветуете? каждый постбэк - первый и последний. Ex_SoftНу и сохранить. По-людськи. INSERT, UPDATE, DELETE Ex_SoftС repeatable read'ом для документов, в случае модификаций. SET TRANSACTION ISOLATION LEVEL REPEATABLE READ Ex_Soft Не спорю: к dataset'у пришли от WinApp, в коем, в свое время, ваялсо обЪект, со всем функционалом. А тут - почти тот же функционал (даже больше). Предлагайте альтернативы - бум рассматривать и тянуцо к свету/знаниям/новым_веяниям руки выпрямляй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 01:28 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
В опчем представил я себе оператора на какой-нить АЗС посреди поля между Хацапетовкой и Мухосранском на dial-up'е (даже не на 33.6 (я видел и 2.4)) - жаль мне его, и его спешащего клиента, возжелавшего при оказии по быстрячку зеленку купить, стало... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 13:20 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы :) Но, во-первых: вы на некоем своём языке тут говорите, непонятно местами ) Во-вторых, уточню: если мне не нужно апдейтить те записи, которые я собираюсь показывать, тогда как? То есть вопрос о том, как часто и каким именно способом загружать измененные записи обратно в БД не стоит вообще. 1. Все только на просмотр (это не интерфейс для работы с БД, а внешний сайт). 2. Записи в БД (нашими операторами, изнутри) меняются так редко и неспешно, что этим можно пренебречь. Для редактирования они используют другой софт. То есть: не выгодно ли иметь некий слепок данных на стороне веб сервера и вот именно с ним и работать, заполняя его один раз - конечно при том условии, что параметры запроса не менялись. В какой-то момент, естественно, произойдет смена параметров - вот тогда то и полезем за новыми данными в БД. Для таких случаев и нужен датасет (System.Data.DataSet)? А вот вы тут про Linq говорили? Причем он тут? Это же сделано для унификации обращений к разным источникам данных, если не ошибаюсь (простите если глупость сказал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 13:33 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
В какой-то момент, естественно, произойдет смена параметров - вот тогда то и полезем за новыми данными в БД. Для таких случаев и нужен датасет (System.Data.DataSet)? да, еще дополнение - почему, собственно, возник вопрос. вот я читаю, что работа в разъединенном окружении происходит быстрее, чем когда нужно каждый раз обращаться к БД. не могу понять: если я один раз за сесиию уже заполнил датасет (при первом обращении), то при повтором открытии той же, грубо говоря, страницы система опять полезет в БД и заполнит датасет? или она сама поймет, что он уже заполнен? то есть: можно (и нужно) ли как-то руками определить - заполнен датасет уже или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 14:16 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Если sheich 1. Все только на просмотр и без сортировок, paging'ов - то тогда, действительно, Вам DataSet'ы не нужны. Просто один раз в OnPageLoad заполните в !IsPostBack все. sheich как-то руками определить - заполнен датасет уже или нет Как вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 14:33 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Ex_SoftЕсли без сортировок, paging'ов - то тогда, действительно, Вам DataSet'ы не нужны Вообще, будет и разбивка на страницы и сортировка. Но это я так думаю лучше делать на стороне SQL сервера и я знаю, как, и работает это достаточно быстро и надежно. Нет смысла выбирать много сотен записей из базы и тащить их на веб сервер, имхо, какой тут выиграыш?! Просто, в случае refresh страницы, когда по каким либо причинам сами данные не меняются, но должны при этом измениться другие части страницы я не хотел бы опять выполнять обращение к БД. Ваш пример именно так и будет работать? Если заранее создать датасет (в отдельном файле проекта, ну этот, с XML-описанием в .xsd) и там задать раз и навсегда жесткую структуру полей - его заполнение будет происходить без лишних тормозов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 14:46 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
sheich Нет смысла выбирать много сотен записей из базы и тащить их на веб сервер абсолютно http://ibase.ru/devinfo/dontdoit.htm]правильно[/quot] (п.2) ;) sheich Просто, в случае refresh страницы, когда по каким либо причинам сами данные не меняются, но должны при этом измениться другие части страницы я не хотел бы опять выполнять обращение к БД. А у Вас обращение к БД тока в трех местах будет: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 15:04 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
Ex_SoftА у Вас обращение к БД тока в трех местах будет: ага.. то есть я таки буду использовать датасет? и, если обращения к БД не произошло, то в датасете останутся старые данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 15:17 |
|
||
|
Вручную заполнить Typed DataSet один раз на всю сессию
|
|||
|---|---|---|---|
|
#18+
sheich то есть я таки буду использовать датасет? нЭт - в этих трех местах вы лезете на БД и получаете то, что Вам нуна... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 15:29 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=35133919&tid=1352410]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 514ms |

| 0 / 0 |
