powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вручную заполнить Typed DataSet один раз на всю сессию
25 сообщений из 32, страница 1 из 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
25 сообщений из 32, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вручную заполнить Typed DataSet один раз на всю сессию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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