Если вы когда-либо захотите переместить свои данные по проводу на другие платформы (silverlight, веб-сервисы, wcf-сервисы и т. Д.), То использование любого набора данных приведет вас в угол.
То, как мы решили это, состоит в том, чтобы иметь классы, список свойств которых точно соответствует базе данных. Чтобы переместить данные в базу данных и из нее, мы используем рефлексию для сопоставления параметров хранимой процедуры или создания динамических операторов SQL в зависимости от обстоятельств и платформы.
При изменении таблицы базы данных разработчик, производящий изменение, также несет ответственность за обновление структуры класса и наоборот.
Чтобы уменьшить требуемое кодирование вручную, мы используем возможности генерации кода CodeSmith для генерации классов из базы данных и создания базовых реализаций наших стандартных процедур добавления/обновления, требующих нумерации полей.
В качестве дополнительного преимущества этот подход устраняет тесную связь между базой данных и структурой бизнес-объекта. Мы можем использовать один и тот же код доступа к данным и классы бизнес-объектов для баз данных SQL Server, Oracle, Sqlite и SqlServerCE. Этот код используется для создания приложений в приложениях Windows, PocketPC, Web, iPad и Android; все мобильные приложения используют локальные базы данных, специфичные для платформы, но используют общий код доступа к данным.
Вначале требуется немного больше работы по настройке, но в долгосрочной перспективе оно принесет значительные дивиденды.
, но когда вы видите файл кода с сильным типом данных, он имеет почти 50 000 строк кода всего за 20 таблиц. Это хорошо, и кто-то сказал мне, что сильно типизированный набор данных потребляет много времени для выполнения, потому что он набирает каждый вещь –
Для меня эти накладные расходы ничем не отличаются от функций, которые я использую. У меня есть webservice-проекты с 40-50 наборами данных в нем, обработка всех данных между сервером и клиентами без каких-либо проблем с производительностью. Но все о том, что вам нужно. Конечно, есть случаи, когда наборы данных не являются решением. Но если вы не используете наборы данных из-за * накладных расходов, возможно, что-то еще проблема ... – Stefan
Я бы никогда не рекомендовал беспокоиться о производительности, прежде чем производительность на самом деле проблема. Вы могли бы потратить 6 месяцев на написание кода, который будет выполняться в тике, а не миллисекундах, но может ли пользователь заметить какую-либо разницу? Мораль истории - если ее более эффективная практика и ее легче поддерживать без чудовищных накладных расходов, сделайте это именно так. – pingoo