Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
2 / 2 / 2
Регистрация: 13.03.2014
Сообщений: 458

Использование элемента DataSet в .NET 6

07.11.2023, 09:40. Показов 1437. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. До этого работал с приложениями на .NET Framework, сейчас пробую перейти на .NET 6. Столкнулся с проблемой, что в .NET 6 не могу найти элемент DataSet. Всегда использовал его, чтобы задать поля таблиц базы данных и отображать их в таблице GridControl, так можно было удобно их редактировать и размещать как нужно в конструкторе таблицы. Сейчас не пойму как это делать. Как найти элемент DataSet или на что его заменить?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2023, 09:40
Ответы с готовыми решениями:

использование DataSet
Добрый день! Как неопытный "сишарпист" опять задам глупые вопросы, т.к. перебрал темы, но нужного не нашел: есть БД Access, в ней таблица...

Использование типизированного DataSet
Есть проект содержащий две формы Form1 и Form2. На каждой из форм размещены компоненты DataGridView c именами Dgv_Fr1 (Form1) и Dgv_Fr2...

Аналог DataSet изи .NET в QT
Здравствуйте! Добавлено через 7 минут Пишу приложение для работы с таблицами их много и они все разные. На .NET есть замечательный...

26
2 / 2 / 2
Регистрация: 13.03.2014
Сообщений: 458
07.11.2023, 15:52  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от XIST Посмотреть сообщение
а какая версия VS
2022

Добавлено через 10 минут
Цитата Сообщение от wizard41 Посмотреть сообщение
Чем присутствие его в конструкторе облегчает жизнь? Ты не можешь объявить датасет в коде руками?
Я акцентирую внимание именно на управлении таблицей GridControl, куда загружаются данные из DataSet. Конструктор GridControl позволяет вертеть полями из DataSet как угодно, группировать, переименовывать, менять местами, скрывать лишние. то есть настраивать отображение таблицы в приложении. Облегчает тем, что в конструкторе в DataSet можно было добавить поле и оно автоматически появлялось в том же GridControl или в отчете FastReport. Всё визуально было видно, а через код придется вручную добавлять или удалять поля там, где это требуется. Тут, возможно, и придется переходить на Dapper или EF, чтобы хоть какаято визуализация была в виде класса таблицы базы данных.
0
 Аватар для XIST
1969 / 1078 / 149
Регистрация: 01.10.2009
Сообщений: 3,646
Записей в блоге: 1
07.11.2023, 16:03
Цитата Сообщение от 1inkin1 Посмотреть сообщение
Облегчает тем, что в конструкторе в DataSet можно было добавить поле и оно автоматически появлялось в том же GridControl
ну так работайте программно
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3461 / 2782 / 575
Регистрация: 04.09.2018
Сообщений: 8,746
Записей в блоге: 3
07.11.2023, 16:04
1inkin1, или я не очень понимаю о чем речь, или у тебя заблуждения. Все то же самое спокойно делается в тех же классах-моделях - источников данных для грида.
Ту "невидимую" логику пропишет конструктор все равно, причем так, как считает нужным. И это далеко не всегда практично.
Своя модель крутится-вертится гораздо эффективнее.
В конце концов, никто не отговаривает менять что-то; дело привычки. Лишь предлагают тебе более лучшие практики, на которые давно перешли 9 из 10 программистов. И никаких проблем не испытывают.
1
2 / 2 / 2
Регистрация: 13.03.2014
Сообщений: 458
07.11.2023, 16:27  [ТС]
Цитата Сообщение от XIST Посмотреть сообщение
ну так работайте программно
придётся
Цитата Сообщение от wizard41 Посмотреть сообщение
В конце концов, никто не отговаривает менять что-то; дело привычки
получается, что ставят перед фактом

Конечно, я пристрастен в этом вопросе, так как привык к определенным методам. Спасибо всем за ответы, буду пробовать делать по новому.
0
Эксперт .NET
 Аватар для Usaga
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,869
08.11.2023, 05:43
Цитата Сообщение от 1inkin1 Посмотреть сообщение
Я, конечно, не продвинутый программист и мне не особо понятны преимущества использования Dapper или EF. Как я написал, используя DataSet в конструкторе, я мог в него забить все нужные таблицы и поля к ним, привязать там же в конструкторе формы BindingSource к нужной таблице в DataSet, а к BindingSource привязать таблицу GridControl и настроить ее отображение. При подключении базы данных, DataSet сразу наполнялся табличными данными и ими можно было управлять и через BindingSource и через GridControl. Нужно добавить или удалить поля - редактируешь DataSet и изменения сразу появляются в GridControl. Dapper и EF же при подключении дают список данных, с которыми тот же BindingSource не работает полноценно, поэтому приходится сначала конвертировать список в таблицу. Да и при внесении изменений класс с полями таблицы нужно перезагружать DataSource подключение в GridControl, чтобы состав полей обновился. В общем, не особо хочется всё переделывать, но раз элемент DataSet удалили, видимо, придется.
Прикол в том, что "быстро накидать" можно и без DataSet. C датасетом в дизайнере ты завязываешься на специализированные возможности студии. Вот этот момент отломали и всё, ты потерялся) Это во-первых. Во-вторых, датасет нетиизированный. Пойди пойми какие там подразумеваются поля и каких они типов. При этом ты всё равно в дизайнере полезешь человекочитаемые имена колонкам грида прописывать. Т.е. объём писанины и работы в целом не меньший, чем напрямую, без дизайнера и датасета.

Ну и вот этот вот аргумент, про "редактирование полей прямо в гриде"... Он работает только в каких-то совершенно тривиальных случаях. В более реалистичных между грибом и базой уже будет какая-то бизнес-логика, а само выгребание данных уже может быть с джойнами и преобразованием данных, из чего DataAdapter тебе уже не сгенерирует Insert\Update команды и надо будет руками это реализовывать, что уже сложнее будет, чем прямая работа, без датасета.

Я согласен с людьми выше: дотасет проканает как быстрое быдло-решение чтобы просто что-то в гриде показать. Если что-то серьезнее, то этот механизм больше проблем создаёт, чем решает. В текущих реалиях это уже больше игрушечное решение, нежели удобное и правильное.

А использовать Dapper или EF - тут каждый сам решает. Можно и руками с ADO.NET возиться, если есть весомые основания (обычно, из нет). Это не отменяет мою позицию относительно использования датасетов, да ещё и в связке с дизайнером...
2
2 / 2 / 2
Регистрация: 13.03.2014
Сообщений: 458
08.11.2023, 08:45  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
датасет нетиизированный. Пойди пойми какие там подразумеваются поля и каких они типов. При этом ты всё равно в дизайнере полезешь человекочитаемые имена колонкам грида прописывать.
Это не так - в Dataset для каждого поля устанавливался тип и заголовок, которые потом наследовались тем же GridControl, поэтому в дизайнере таблицы оставалось только разместить уже готовую колонку в нужном месте.
Цитата Сообщение от Usaga Посмотреть сообщение
Если что-то серьезнее, то этот механизм больше проблем создаёт, чем решает.
Это я в целом осознал. Просто для меня, как не особо глубоко знакомого с работой этих методов, наверное, важнее было именно удобство использования и для моих задач Dataset и адаптер вполне подходили. Но раз теперь не получится пользоваться по старинке, то буду менять подход. С EF уже начал знакомиться, наверное, с ним и продолжу работать.
0
Эксперт .NET
 Аватар для Usaga
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,869
10.11.2023, 05:51
Цитата Сообщение от 1inkin1 Посмотреть сообщение
Это не так - в Dataset для каждого поля устанавливался тип и заголовок, которые потом наследовались тем же GridControl, поэтому в дизайнере таблицы оставалось только разместить уже готовую колонку в нужном месте.
Этот тип существует только в рантайме, а не в коде. Можно сгенерировать\дописать руками геттеры\сеттеры для свойств. Но это ещё хуже, так как что тогда мешает сделать обычный класс?

Цитата Сообщение от 1inkin1 Посмотреть сообщение
С EF уже начал знакомиться, наверное, с ним и продолжу работать.
Я не настаиваю на EF. Вообще никак не настаиваю. Я настаиваю на работе с пользовательскими классами, описывающих выборки из базы или параметры запросов. А как ты объекты этих классов будешь получать тут роли не играет. Это может быть прямая работа с ADO.NET, через MicroORM типа Dapper или PetaPOCO, или "взрослые" ORM типа Linq2Db и EF. Не важно. Главное типизация.

По поводу EF'а сразу хочу предупредить, чтобы ты очень осторожно относился к его механизму Change Tracker и выгребнию данных в виде коллекций исходных сущностей и байндинга их к гриду. Речь о таком. Это тоже фиговая практика. Даже хуже, чем работа с датасетами. Старайся избегать её. И налегать на "проекции" (сущности\коллекции сущностей получаемые методом IQueryably.Select). Магии меньше, но работать будет гораздо лучше.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2023, 05:51

DataGrid и DataSet и .Net compact
Всем привет! C C# не знаком, но нужно написать простую программулину. Такая проблема! Есть: DataGrid.DataSource =...

Dataset на стороне клиента в ASP.Net
Как можно хранить DataSet и работать с ним на стороне клиента?

Является ли плохим тоном использование DataSet и Xml
В книге по ADO.NET (Сеппа) есть целый раздел посвященный работе с XML через DataSet и наоборот. На одном из форумов была дискуссия о том...

Использование stand-alone DataSet, созданного в визуальном редакторе
Доброго времени суток. Прошу подсказки, ситуация такова: в визуальном редакторе создал DataSet (сразу оговорюсь, что работаю с...

Использование одних данных из DataSet в нескольких формах
Доброе время суток!! Помогите пожалуйста! Я пишу приложение с использованием DataSet и у меня возникла проблемка. Имеется Form1 и Form2....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru