2008-08-30 5 views
1

Сколько стоит один DataSet? Используя пример системы заказов: показывая ваш заказ, я также показываю список предметов, похожих на один из ваших, а также список наших самых популярных предметов. Хотя ваши товары запутаны в сети отношений, связанных с вами и вашими прошлыми заказами, предпочтительными поставщиками и различными другими видами информации, относящимися к вам как клиентом, другие элементы не имеют таких же отношений. Набор запросов, которые я использую для навигации по набору вещей, представляющих вас, отличается от запросов, которые я использую для одного из этих других списков элементов.Сколько стоит один DataSet?

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

Возможно, я переоцениваю функцию отношений DataSet, или, может быть, мне просто нужно пережить себя, так или иначе я мог бы использовать некоторые рекомендации.

ответ

1

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

Чтобы избежать описанного выше сценария, наиболее разумным подходом является отказ от разумного повторного использования. Определите набор данных для каждой цели и для использования. Однако основная проблема с этим - использование API, в итоге вы получаете набор данных, аналогичный другому набору данных, но поскольку это другой тип набора данных, вы должны преобразовать его, чтобы использовать общий API, который является одновременно болезненным и неэлегантным.

Это, а также тот факт, что сильно типизированные наборы данных делают ваш код ужасным (длина деклараций типа) в значительной степени являются причинами, которые я отказался от наборов данных и вместо этого переключился на бизнес-объекты.

4

DataSet сильно переоценен и чрезмерно используется. Используйте строго типизированные коллекции (спасибо, дженерики и автоматические свойства!). Как глазурь на торте, теперь вы можете даже делать интересные запросы против ваших пользовательских объектов с помощью LINQ.

статья

Хорошо Эспозито наборов данных по сравнению с пользовательскими объектами:

http://msdn.microsoft.com/en-us/magazine/cc163751.aspx

Автоматические свойства:

http://weblogs.asp.net/dwahlin/archive/2007/12/04/c-3-0-features-automatic-properties.aspx

LINQ с объектами:

http://blogs.msdn.com/wriju/archive/2006/09/16/linq-custom-object-query.aspx

Смежные вопросы