powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вручную заполнить Typed DataSet один раз на всю сессию
32 сообщений из 32, показаны все 2 страниц
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133154
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи,

Начал разбираться с 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? -там же можно и таблицы и тп.п или опять же лучше создавать/привязывать/заполнять в момент выполенния запроса?
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133248
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лучше вообще датасетами не пользоваться
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133321
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
лучше вообще датасетами не пользоваться

обоснуйте, pls...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133446
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft
обоснуйте, pls...

а что обосновывать, и так всем все давно ясно, что датасеты - это зло. Они извращают ум и толкают на написание галимого кода. Имхо с появлением DLINQ о датасетах вполне можно забыть, тот же RAD теперь возможен и с более прогрессивными технологиями :)
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133492
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
датасеты - это зло

Ну... Это я уже не первый раз слышу... Однако на это + это получил...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133529
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft
Ну... Это я уже не первый раз слышу... Однако на это + это получил...

слушай, иди со своими загадками и ссылками на посты в другое место, утомил. Пиши своими словами, а не чужими цитатами. Мнение пользователя i see для меня не является авторитетным и каких-либо обоснований чтобы поддержать его точку зрения в указанных постах я не увидел
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133760
пых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зыа что обосновывать, и так всем все давно ясно, что датасеты - это зло. Они извращают ум и толкают на написание галимого кода. Имхо с появлением DLINQ о датасетах вполне можно забыть, тот же RAD теперь возможен и с более прогрессивными технологиями :)
бугага! а датасет - это такая прогрессивная технология, с появлением которой все забыли о рекордсетах
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133807
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пых
бугага! а датасет - это такая прогрессивная технология, с появлением которой все забыли о рекордсетах
ну, все понемногу эволюционирует :) но связывать свою жизнь с таблицами, обмазанными методами, это плохо. О чем-либо более сложном я даже боюсь тут заикнуться, надо человека подталкивать потихоньку, иначе испугается
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133846
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
эволюционирует

Хорошо... В контексте эволюции: что можете предложить?
ЭстЪ тариф , франшиза . Они в риске . РискИ в обЪекте . ОбЪектЫ в договоре .
Кроме того в договоре ЭстЪ контрагенты со своими адресами , документами , банковскими реквизитами и пр.
И все это вываливаецо для вводиловки. Разделить - не имеет смысла. Оператор должен видеть все. Посткольку все взаимосвязанно. Причем с этим необходимо "играться": изменить тариф/франшизу, добавить/удалить риск/обЪект/контрагента и посмотреть что из этого получиться. И только окончательный вариант сохранить в БД.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133865
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любой ORM отлично справится с сохранением дерева данных в одной транзакции, при этом необходимого кода будет буквально одна строка - соранить рутовый объект.
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133880
пых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зыну, все понемногу эволюционирует :) но связывать свою жизнь с таблицами, обмазанными методами, это плохо. О чем-либо более сложном я даже боюсь тут заикнуться, надо человека подталкивать потихоньку, иначе испугается
может все-таки не надо подталкивать? просто мозги вправить на место - и не придется заикаться о сложном...
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133919
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пых
может все-таки не надо подталкивать? просто мозги вправить на место - и не придется заикаться о сложном...
вправляй, у меня на датасеты аллергия
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35133959
пых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, но я тоже не работаю с датасетами :)
афтар, на веб-странице надо вытащить из базы только то, что на ней отображается. кешировать данные БД в датасетах или еще где имеет смысл в очень редких случаях, когда данных мало и они очень редко меняются. в этом случае дешевле весь датасет поместить в кеш минут на аццать. и все.
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35134238
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пых
на веб-странице надо вытащить из базы только то, что на ней отображается

Угу... Пон... Только, вот, есть один ньюанс: некоторые значения имеют 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
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35134266
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft
..бла-бла-бла..

все что ты написал не более чем расфуфыренные слова. Не думай, что твоя проблема настолько уникальна, что ты единственный знаешь верное решение.
Что такое "блокировочник" и что из него вытекает? я твой старорусский непонимать. А "repeatable read для документов"?
Вообще, судя по твоему красочному описанию, страница у тебя должна открываться минуты 2, не иначе. Если это так, то пора сменить работу или позвать в помощь DBA. Если не так, то она вполне переживет пост-беки, сделанные с умом
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35134365
пых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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, в коем, в свое время, ваялсо обЪект, со всем функционалом. А тут - почти тот же функционал (даже больше). Предлагайте альтернативы - бум рассматривать и тянуцо к свету/знаниям/новым_веяниям

руки выпрямляй
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35134794
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В опчем представил я себе оператора на какой-нить АЗС посреди поля между Хацапетовкой и Мухосранском на dial-up'е (даже не на 33.6 (я видел и 2.4)) - жаль мне его, и его спешащего клиента, возжелавшего при оказии по быстрячку зеленку купить, стало...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35134854
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы :)
Но, во-первых: вы на некоем своём языке тут говорите, непонятно местами )
Во-вторых, уточню: если мне не нужно апдейтить те записи, которые я собираюсь показывать, тогда как? То есть вопрос о том, как часто и каким именно способом загружать измененные записи обратно в БД не стоит вообще.
1. Все только на просмотр (это не интерфейс для работы с БД, а внешний сайт).
2. Записи в БД (нашими операторами, изнутри) меняются так редко и неспешно, что этим можно пренебречь. Для редактирования они используют другой софт.
То есть: не выгодно ли иметь некий слепок данных на стороне веб сервера и вот именно с ним и работать, заполняя его один раз - конечно при том условии, что параметры запроса не менялись. В какой-то момент, естественно, произойдет смена параметров - вот тогда то и полезем за новыми данными в БД. Для таких случаев и нужен датасет (System.Data.DataSet)?
А вот вы тут про Linq говорили? Причем он тут? Это же сделано для унификации обращений к разным источникам данных, если не ошибаюсь (простите если глупость сказал).
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135072
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В какой-то момент, естественно, произойдет смена параметров - вот тогда то и полезем за новыми данными в БД. Для таких случаев и нужен датасет (System.Data.DataSet)?
да, еще дополнение - почему, собственно, возник вопрос.
вот я читаю, что работа в разъединенном окружении происходит быстрее, чем когда нужно каждый раз обращаться к БД. не могу понять: если я один раз за сесиию уже заполнил датасет (при первом обращении), то при повтором открытии той же, грубо говоря, страницы система опять полезет в БД и заполнит датасет? или она сама поймет, что он уже заполнен? то есть: можно (и нужно) ли как-то руками определить - заполнен датасет уже или нет?
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135172
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если
sheich
1. Все только на просмотр

и без сортировок, paging'ов - то тогда, действительно, Вам DataSet'ы не нужны. Просто один раз в OnPageLoad заполните в !IsPostBack все.
sheich
как-то руками определить - заполнен датасет уже или нет

Как вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DataTable
   Data;

string
   SessionSignature="Data";

protected void Page_Load(object sender, EventArgs e)
{
	if((Data=(DataTable)Session[SessionSignature])==null)
	{
		Session[SessionSignature]=Data=new DataTable();
		FillData(Data);
	}
}
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135243
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_SoftЕсли без сортировок, paging'ов - то тогда, действительно, Вам DataSet'ы не нужны Вообще, будет и разбивка на страницы и сортировка. Но это я так думаю лучше делать на стороне SQL сервера и я знаю, как, и работает это достаточно быстро и надежно. Нет смысла выбирать много сотен записей из базы и тащить их на веб сервер, имхо, какой тут выиграыш?!
Просто, в случае refresh страницы, когда по каким либо причинам сами данные не меняются, но должны при этом измениться другие части страницы я не хотел бы опять выполнять обращение к БД. Ваш пример именно так и будет работать? Если заранее создать датасет (в отдельном файле проекта, ну этот, с XML-описанием в .xsd) и там задать раз и навсегда жесткую структуру полей - его заполнение будет происходить без лишних тормозов?
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135342
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
protected void Page_Load(object sender, EventArgs e)
{
	if(!IsPostBack)
	{
		BD();
	}
}
....
protected void GridView_Sorting(object sender, GridViewSortEventArgs e)
{
	BD();
}
....
protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
	BD();
}
так что - не переймайтесь ;)
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135397
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_SoftА у Вас обращение к БД тока в трех местах будет:
ага.. то есть я таки буду использовать датасет?
и, если обращения к БД не произошло, то в датасете останутся старые данные?
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135463
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sheich
то есть я таки буду использовать датасет?

нЭт - в этих трех местах вы лезете на БД и получаете то, что Вам нуна...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135503
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_SoftнЭт - в этих трех местах вы лезете на БД и получаете то, что Вам нуна...
так тогда в остальных случаях у меня не будет данных на странице вообще??
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135510
пых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft
В опчем представил я себе оператора на какой-нить АЗС посреди поля между Хацапетовкой и Мухосранском на dial-up'е (даже не на 33.6 (я видел и 2.4))
и что беспокоит его диалупу? вьюстейты? отключите вьюстейты.
sheichТо есть: не выгодно ли иметь некий слепок данных на стороне веб сервера и вот именно с ним и работать, заполняя его один раз - конечно при том условии, что параметры запроса не менялись.
если данные зависят от параметров запроса - скорее всего нет, определяется только опытным путем на живых юзерах и данных. программисту однозначно не выгодно. поэтому сначала настругай тормозных запросов, а потом уже пляши с бубном. начни с @OutputCache.
sheichДля таких случаев и нужен датасет (System.Data.DataSet)?
хз. в датасет можно закачать небольшую БД и послать в Мухосранск в виде хмл. Ex_Softа спрашивай
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135556
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пыхпоэтому сначала настругай тормозных запросов, а потом уже пляши с бубном. начни с @OutputCache.
как работает кэширование я уже понял. я могу инклюдить таблицу с данными на страницу в виде отдельного контрола и навесить @OutputCache только на этот контрол - он будет апдейтиться только при изменении параметров запроса, касающихся только данных именно из этой таблицы. так?
пыхв датасет можно закачать небольшую БД
что можно закачать - это понятно! вопрос в том, как его там сохранить?
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135655
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пых
и что беспокоит его диалупу?

побежняки на сервер за каждым пуком причем не только к IIS, но и к БД
пых
Ex_Soft
И что же - прикажете при каждом submit'е при "игре" с параметрами в БД лазить?

да

sheich
Для таких случаев и нужен датасет (System.Data.DataSet)?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
....
<asp:GridView ID="GridView1" AllowPaging="True"...
....
dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind(); //System.NotSupportedException: The data source does not support server-side data paging.
....
или самому ручками на СУБД...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135693
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Softasp:GridView ID="GridView1" AllowPaging="True"
нет, я так не могу. мне нужно, что бы при смене страницы, сортировке происходила смена URL
то есть каждой уникальной странице должен соответствовать уникальный URL
то есть да, руками буду делать сортировку.
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135722
пых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sheichя могу инклюдить таблицу с данными на страницу в виде отдельного контрола и навесить @OutputCache только на этот контрол - он будет апдейтиться только при изменении параметров запроса, касающихся только данных именно из этой таблицы. так?
да
sheichчто можно закачать - это понятно! вопрос в том, как его там сохранить?
как сохранить сам датасет? Application["MyFuckingDataSet"] = dset или Cache.Insert(...). только не в сессии.
Ex_Softпобежняки на сервер за каждым пуком причем не только к IIS, но и к БД
Ex_Soft, ты вообще фкурсе как работает тырнет?
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135818
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пых
Application["MyFuckingDataSet"] = dset или Cache.Insert(...)

Угу... А потом вот юзвера удивляцо будут, что получают данные соседа ;)
пых
фкурсе как работает тырнет?

фкурсе, фкурсе... ;)
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вручную заполнить Typed DataSet один раз на всю сессию
    #35135920
пых
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft
Угу... А потом вот юзвера удивляцо будут, что получают данные соседа ;)

удивляться будешь ты, когда умножишь вес датасета на количество сессий, которые один Вася Пупкин сможет нагенерить за пару минут. нет такого параметра в запросе естессно.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вручную заполнить Typed DataSet один раз на всю сессию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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