Путаница по поводу правильного использования таблиц данных и наборов данных - PullRequest
3 голосов
/ 30 декабря 2011

Я проводил некоторые исследования относительно того, что является лучшей практикой в ​​отношении использования наборов данных и наборов данных, и я не нашел никакого реального окончательного ответа.Оба работают для того, что я хочу сделать, но пока нет окончательного ответа, общий консенсус здесь и везде заключается в том, что наборов данных следует избегать.

По сути, я хочу получить данные из базы данных, используяхранимые процедуры.Каждая из хранимых процедур извлекает данные из разных таблиц и может выполнять некоторые объединения.Эти данные затем отображаются в форме окна.Пользователь будет использовать эти данные, а затем либо добавит новую запись, либо обновит существующую в базе данных.

Один из известных мне методов состоит в том, чтобы выполнять отдельные вызовы базы данных, сохраняя результаты в виде данных изатем работать с этим объектом, чтобы отобразить его на экране.Это делается с помощью ADO.net.Это работает.Кроме того, использование набора данных для возврата всех этих данных из одного вызова базы данных (одной хранимой процедуры) также работает.Но, видимо, это не идеальный или самый эффективный способ ведения дел?Я не слишком знаком с LINQ, но это похоже на еще один метод получения данных.

Полагаю, это широкий вопрос для конкретной проблемы.Хотя услуги на самом деле не могут быть использованы в данный момент, идеальным решением было бы спроектировать систему так, чтобы в будущем мы могли использовать веб-службы.

Мне кажется, что я уже слишком много анализируюточка, и я уверен, что мне удалось успешно запутать себя, когда дело доходит до всего этого.Буду очень признателен за комментарии и мысли по этому вопросу.

Ответы [ 2 ]

3 голосов
/ 30 декабря 2011

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

DataTable также удобен для подачи SqlBulkCopy.

Многие люди утверждают, что для всего остального предпочтительны обычные классы c #.Конечно, очень редко я вижу DataTable в производственном коде в эти дни.Тем не менее, это может работать.

Лично мне нравится POCO + "dapper", который убирает всю работу по связыванию (в том числе для SPROC), но прекрасно работает с типизированными моделями классов, без дополнительных издержек на полные ORM.

3 голосов
/ 30 декабря 2011

Если у вас есть какие-либо службы в будущем, вам следует немедленно отказаться от наборов данных и наборов данных и создать бизнес-классы (или объекты передачи данных или DTO).

Это правильная долгосрочная реализация, если у вас есть какие-либонамерение когда-либо перемещать данные по услуге.

...