![]() |
|
Модераторы: gambit |
![]()
|
|
| xess |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
В Access имеется 4 таблицы, которые будут содержать от 500 до 1000 записей примерно. Также имеется 8 маленьких таблиц-справочников (от 5 до 20 записей). Все таблицы связаны.
Собираюсь работать с этими таблицами через DataSet. Так вот вопрос: не рационально ведь создавать один DataSet для всех таблиц? Если да, то по какому принципу создавать несколько DataSet'ов? И как, например, потом можно с ними работать, если таблицы будут в разных датасетах, но по логике связаны отношением один-к-одному или один-ко-многим? Т.е. если вдруг понадобится отобразить в DataGridView запись, один из атрибутов который связан с таблицей-справочником из другого датасета? Это сообщение отредактировал(а) xess - 2.4.2007, 03:35 |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
По-моему DataSet просто создан для твоей ситуации Единственное, что могло бы заставить меня задуматься над разделением таблиц на несколько DataSet'ов, - экономия памяти в случае малой востребованности некоторых таблиц. Если у тебя именно такая ситуация, то можешь подгружать не все таблицы разом, а по отдельности: сначала основные, а потом (по мере необходимости) - маловостребованные. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 4 Всего: 149 |
xess, я вижу смысл таблиц только если ты собираешься отображать эту таблицу 1:1 на гриде.
Если отображаемые данные берутся из разных таблиц, то лучше и создать такую таблицу в датасете. Например, у меня в проекте есть много таблиц, отображаю же я только часть одной таблицы, сложная выборка из нескольких других, и пара информационных таблиц. На всех их заведены адаптеры с таблицами в датасете, но только на них. Всю остальную информацию я получаю небольшими запросами: сколько того-то, столько того-то, получить информацию о конкретной записи... Незачем хранить данные, которые тебе не понадобятся, или которые можно получить из базы. Только те, для которые будет потом отображаться в гридах. Просто для информации: ДатаСет это просто каркас, на который насаживаются таблицы, которые, в свою очередь, каркас для записей таблиц. Так что если записей не будет, то и таблица, и за ней ДатаСет много памяти не съест (несколько килобайт для .Net даже не учитываются). |
|||
|
||||
| FreakK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 1.7.2005 Где: Lviv (Ukraine) Репутация: нет Всего: нет |
Полностью согласен с ivashkanet,
дело в том что до вызова TableAdapter.Fill(datatable); или DataSet1.dataTable.Load(datareader); в таблице никакой инфы не будет а пожже когда она уже ненужна сам об’экт можно почистить. А само присутствие такого об’экта как DataTable в памяти много ресурсов не сест(если он не заполнен). Я считаю не стоит использовать несколько датасетов ето попортит логику проекта если он большой. |
|||
|
||||
| xess |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
Всем спасибо за советы!
Просто прочитал в книжке "ADO.NET 2.0 для профессионалов" что:
Поэтому и задался вопросом как обычно люди делают До этого и сам считал что запихать все таблицы в один Датасет нормально |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 4 Всего: 149 |
||||
|
||||
| xess |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
ivashkanet, я имел ввиду что пустые таблицы (каркасы для записей) нормально запихать в один датасет, т.е. я раньше думал так. Но насколько я понял автора книги, он утверждает что даже пустые таблицы не стоит все запихивать в один датасет, если их много.
или я не совсем понял содержание твоего последнего поста? |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 4 Всего: 149 |
Книжку на помойку Краш-тест показал, что 1000 пустых таблиц с 10 колонками кушает "всего" около 6,5 Мб памяти. Т.о. 6,5 Кб на 1 таблицу --- не так уж и много для приложения, которое пустое (одна форма) кушает 13 Mb оперативки. Плюс, если таблицы будут заполняться, то счет пойдет на 10-ки мегабайт Кроме того не каждая таблица похвастается 10 столбцами
Я говорю о том, что заводить нужно только только те таблицы, которые ты будешь отображать их на форме. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |