Любая причина использовать DataSets с локальными базами данных с SQL Server CE? - PullRequest
0 голосов
/ 22 января 2009

Имеет ли смысл использовать .NET DataSets даже в приложениях, которые используют локальную внутрипроцессную базу данных для сохранения данных приложения?

Если наборы данных в основном предназначены для кэширования результатов в базе данных в памяти, кажется, что они не столь полезны при использовании чего-то вроде локальной базы данных SQL Server Compact, которая выполняется в том же процессе, что и приложение.

Есть ли другие причины для использования типизированных наборов данных? Скажите, они облегчают привязку данных WPF?

Ответы [ 3 ]

2 голосов
/ 25 января 2009

Позвольте мне попытаться ответить на мой собственный вопрос.

Мне кажется, что DataSets были разработаны для таких вариантов использования, как этот:

  1. Данные загружаются из удаленной БД в кэш в памяти (набор данных).
  2. Кэшированная копия обрабатывается нетривиальными способами (несколько таблиц, удаление, добавление, обновление) без активного подключения к базе данных.
    • Для включения этих операций необходимо смоделировать отношения с БД в локальном кеше.
    • Привязка данных к пользовательскому интерфейсу (например, WPF) тривиальна, потому что мы работаем над копированием данных в памяти.
  3. Кэшированная копия иногда обновляется в удаленной БД для сохранения подлинности.
    • Это может произойти, например, когда клиент возвращается в онлайн-состояние или пользователь нажимает «Применить», чтобы действительно зафиксировать свои данные.

С локальными внутрипроцессными базами данных нет необходимости работать полностью в автономном режиме - локальное соединение с БД всегда доступно. Это предполагает, что моделирование (потенциально) сложных отношений с БД в локальном кеше для включения, удаления и обновления не требуется. Скорее, можно было бы напрямую изменять данные в базе данных и поддерживать только локальный локальный кеш для просмотра данных. Локальный кеш можно отделить от уровня БД и поместить в собственный слой ViewModel (MVVM).

0 голосов
/ 16 мая 2009

Вы можете использовать SQL Server compact для простого модульного тестирования приложения, которое должно работать с SQL сервером. Без Sql server compact ваш тест представляет собой интеграционный тест, а не модульный тест (сложнее в настройке и занимает больше времени).

0 голосов
/ 22 января 2009

Я удалил все набранные наборы данных из своего приложения. Их создание занимает слишком много времени. Под созданием я подразумеваю новое утверждение / конструктор. Кроме того, получение данных не так эффективно, как использование DataReaders напрямую.

Не знаю, если много запросов (с DataReader) к действующей базе данных сделают ваше приложение намного медленнее. Я думаю, это зависит только от вашей заявки.

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

...