А зачем он нужен, этот DataSet?

zz
Дата: 03.02.2005 15:55:50
Все никак не получается у меня понять скрытого великого смысла Dataset'a в Windows-приложениях.
Если сравнивать ADO и ADO.NET, то можно легко понять, что аналог АДОшному рекордсету - это DataTable. DataTable имеет свой собственный DataAdapter, отвечающий за считывание/изменение данных. А в DataSet группируются несколько DataTable, навешиваются Relations и все такое. Вопрос: зачем это надо на практике?

1. Если есть большая таблица с короткими записями и к ней справочная - с длинными записями (напр, Заказы (КодЗаказа, КодКлиента) и Клиенты(КодКлиента, Имя, Телефон, Адрес, и т.д.). Чтобы не тащить много данных, можно считать отдельно одну табл, отдельно - вторую и проджойнить их уже на клиенте через ParentRow.
Однако такие случаи не очень-то распространены и создавать ради них DataSet - сомнительное удовольствие.

2. Контроль за целостностью вводимых данных (ограничение внешнего ключа). Однако в подаляющем большинстве случаев (если не во всех) пользователь не может самостоятельно создать ключ, и, следовательно, не может нарушить целостность. К тому же контроль за целостностью вполне может осуществлять БД.

Что ж еще-то? Почему нельзя ограничиться DataTable?
К тому же, в случае отсоединенного набора, чем больший объем информации мы стащим на клиента, тем более вероятны конфликты обновления. Не лучше ли получать данные маленькими "порциями" в DataTable и как можно скорее их обновлять?

Объясните, пожалуйста.
hDrummer
Дата: 03.02.2005 16:45:29
Одна из задумок была такой, что клиент загрузил датасет на компьютер, уехал в командировку, поработал, приехал, залил с изменениями на сервер автоматом и всё.

Хотя это всего лишь один из возможных подходов.
zz
Дата: 03.02.2005 16:57:22
Ну ничего себе. Это хорошо, когда есть уверенность, что больше никто с этми данными не работает. А иначе - конфликты обновления. Или - кто последний, тот и прав?
Правильно ли я вас понял:
В случае обыкновенного многопользовательского клиент-серверного приложения можно (или даже нужно, т.к. создание и поддержка DataSet отжирает куда больше ресурсов, чем DataTable) использовать DataTable?
Роман Дынник
Дата: 03.02.2005 17:00:04
А типизированный DataTable можно сделать?

Posted via ActualForum NNTP Server 1.1

Роман Дынник
Дата: 03.02.2005 17:00:47
одна из задумок была сделать из DataSet бизнес-объект.

Posted via ActualForum NNTP Server 1.1

Kulibin
Дата: 06.02.2005 17:50:15
на счёт кто последний тот и прав, не много не правильно.
по-умолчанию скорее всего кто первый тот и прав (так датаадаптер работает).
а вообеще датасет очень удобная штука относительно него всякие гриды обычно заполняются, кроме того это действительно отсоединённая бд (обычно через вебсервисы получаем данные работаем с ними как можно дольше, что бы узкий канал связи не напрягать).
а вообще-то по этому поводу много статей примеров.