Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Доступ к данным в типизированных и нетипизированных наборах данных

Класс для типизированного набора данных имеет объектную модель, в которой его свойства принимают действительные имена таблиц и столбцов. Например, при работе с типизированными наборами данных можно ссылаться на столбцы с помощью следующего кода:

Язык C#

// This accesses the CustomerID column in the first row of the Customers table.

string customerIDValue = northwindDataSet.Customers[0].CustomerID;

В то же время при работе с нетипизированным набором данных эквивалентный код будет выглядеть так:

Язык C#

string customerIDValue = (string)

dataset1.Tables["Customers"].Rows[0]["CustomerID"];

Типизированный доступ не только отличается большей удобочитаемостью, но и полностью поддерживается технологией IntelliSense в Редакторе кода Visual Studio. Помимо того, что с таким кодом проще работать, синтаксис для типизированного набора данных позволяет проверять типы во время компиляции, что существенно уменьшает вероятность ошибок при присвоении значений элементам набора данных. Если изменить имя столбца в DataSetи затем скомпилировать приложение, будет получена ошибка построения. Двойным щелчком клавишей мыши по ошибке построения в Списке задач можно перейти непосредственно к строке(-ам) кода, ссылающейся на старое имя столбца. Кроме того, доступ к таблицам и столбцам в типизированном наборе данных во время выполнения происходит несколько быстрее, так как доступ определяется на этапе компиляции, а не с помощью коллекций во время выполнения.

Хотя типизированные наборы данных обладают рядом преимуществ, во многих случаях целесообразно применять нетипизированные наборы. Самый очевидный сценарий – когда для набора данных нет доступной схемы. Такое может произойти, например, если приложение взаимодействует с компонентом, который возвращает набор данных, но при этом его структура заранее не известна. Иногда приходится работать с данными, не имеющими статической предопределенной структуры; в этом случае работать с типизированным набором данных нецелесообразно, так как приходится заново создавать класс типизированного набора данных при каждом изменении структуры данных.

Довольно часто приходится создавать наборы данных динамически, не имея доступной схемы. В этом случае набор данных является просто удобной структурой, в которой можно хранить данные до тех пор, пока они не будут представлены в виде реляционной структуры. В то же время можно использовать такие дополнительные возможности набора данных, как сериализация данных для передачи их в другой процесс или для сохранения в виде XML-файла.

Зависимость от регистра в наборе данных

По умолчанию имена таблиц и столбцов в наборе данных не зависят от регистра. Это означает, что к таблице Customersв наборе данных можно также обратиться и по имениcustomers. Такой подход соответствует соглашениям о присвоении имен, принятым во многих СУБД, включая SQL Server, где имена элементов данных не должны отличаться друг от друга только регистром букв.

Однако чувствительность к регистру может быть фактором, определяющим способ интерпретации данных в наборе. Например, при фильтрации данных в таблице набора данных критерий поиска может возвращать различные результаты в зависимости от того, учитывается при сравнении регистр или нет. Можно управлять чувствительностью к регистру при фильтрации, поиске и сортировке, устанавливая свойство CaseSensitiveнабора данных. По умолчанию все таблицы набора данных наследуют это свойство.