Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > DataGridView c


Автор: aldari 4.8.2010, 08:22
Здравствуйте, 
 По книге написал приложение на C# в VS 2008 EE с использованием технологии DataBinding.
 А точнее перетащил с вкладки data sources на формочку ярлык таблицы и VStudio создала 
 объекты DataSet, DataBinding, DataGridView, DataAdapter.
 
 По мере роста числа записей в БД время запуска и количество потребляемой памяти ростет. 

 Теоретически, решение - сократить количество записей возвращаемых из БД.
 Изменил запрос метода Fill,  в результате колиство отображаемых в таблице DataGridView строк значительно 
 уменьшилось, а объем занимаемой оперативки нисколько!

 Подскажите как можно уменьшить количество используемой оперативной памяти в таком приложении?

Автор: mrbrooks 4.8.2010, 08:30
Цитата(aldari @  4.8.2010,  09:22 Найти цитируемый пост)
Изменил запрос метода Fill,  в результате колиство отображаемых в таблице DataGridView строк значительно 
 уменьшилось, а объем занимаемой оперативки нисколько!

Визуально - да. Количество строк уменьшилось. Но на самом деле все одно в DataSet загружаются все, что соответствует запросу.


Цитата(aldari @  4.8.2010,  09:22 Найти цитируемый пост)
Подскажите как можно уменьшить количество используемой оперативной памяти в таком приложении? 

гуглите на тему Paging DataGridView

Автор: Экскалупатор 4.8.2010, 09:51
скорее всего, выборка идет всех данных из базы. то что они не отображаются ниочем не говорит. мне кажется лучше всего выбирать из базы только то что нужно, а не все подряд. тогда не будет большого расхода памяти, но придется чаще обращаться к базе.

Автор: mrbrooks 4.8.2010, 10:00
те же яйца - только в профиль © smile

Автор: aldari 10.9.2010, 08:52
 Все верно говорите.
 Я хотел бы иметь те плюсы которые дает привязка данных (data binding ) - обновление информации, добавлнение, 
 (удаление на стороне клинта не подразумевается).
 Но при использовании Data Paging я теряю пивязку данных.
 
 Не желательно при написании клиента быть сильно привязанным к структуре реляционной БД.
 Вот здесь нашел статью на английском: http://www.15seconds.com/issue/040614.htm.
 В ней написанно как можно привязать компоненты к свойствам объектам и колекции объектов.
 Таким образом можно создавать столько объектов скольо нужно и иметь привязку.

 Если у кого есть материал по этой теме прошу поделиться, направить в какую сторону копать.

Автор: mrbrooks 10.9.2010, 09:19
Цитата(aldari @  10.9.2010,  09:52 Найти цитируемый пост)
Но при использовании Data Paging я теряю пивязку данных.

каким образом?

Цитата(aldari @  10.9.2010,  09:52 Найти цитируемый пост)
 Не желательно при написании клиента быть сильно привязанным к структуре реляционной БД.

Абстрагируйтесь через ORM


Автор: gegemon 16.9.2010, 20:41
ds - объект DataSet; da1, da2 - объекты DataAdapter
Код

ds.EnforceConstraints = false;
da1.Fill(ds.Tables["Table1"]);
da1.Fill(ds.Tables["Table1"]);
ds.EnforceConstraints = true;


Примерно так, то есть отключить и включить EnforceConstraints. Так мы выключаем соблюдение ограничений типа PRIMARYKEY или UNIQUE, вызываем Fill и снова блюдём ограничения)) Производительность при увеличении записей должна повыситься.

ЗЫ Как раз сегодня у читал об этом у Сеппы =)
ЗЗЫ Если что не так сказал, извиняйте - с ADO.NET знаком буквально 2 дня..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)