
- •Архитектура ado.Net
- •Компоненты ado.Net
- •Поставщики данных .Net Framework
- •Внутренние источники данных
- •Подключение к данным
- •Общие сведения о подключении к данным в Visual Studio
- •Создание подключений
- •Строки подключения
- •Закрытие соединений
- •Установка соединения посредством кода (ado.Net)
- •Соединение с mssql Server
- •Примеры
- •Построитель строк соединения (ado.Net) SqlConnectionStringBuilder
- •Примеры
- •Соединение с источником данных ole db
- •Примеры
- •Соединение с источником данных odbc
- •Соединение с источником данных Oracle
- •Сохранение и извлечение строк подключения
- •Изменение строки подключения
- •Редактирование жестко закодированных строк подключения
- •Открытие и закрытие подключений
- •Группировка подключений в пул
- •Транзакции
- •Подключения на этапе разработки в обозревателе серверов/обозревателе баз данных
- •Хранение данных в наборах данных
- •Взаимодействие с базой данных через объект DataSet
- •Класс DataSet
- •Сравнение типизированных и нетипизированных наборов данных
- •Доступ к данным в типизированных и нетипизированных наборах данных
- •Зависимость от регистра в наборе данных
- •Навигация по записям в наборах данных
- •Наборы данных и xml
- •Ограничения
- •Создание объекта DataTable
- •Пример создания таблицы с несколькими столбцами
- •Ограничения DataTable
- •События DataTable
- •Общие сведения об адаптере таблиц
- •Связанная схема объекта DataTable
- •Команды обновления TableAdapter
- •Запросы адаптера таблиц
- •Свойство ClearBeforeFill
- •Обновление источников данных с помощью объектов DataAdapter (ado.Net)
- •Столбцы AutoIncrement
- •Методы и свойства TableAdapter
- •Метод обновления TableAdapter
- •Методы GenerateDbDirectMethods адаптера таблицы
- •Создание запросов TableAdapter.
- •Для добавления запроса в TableAdapter с помощью Конструктора наборов данных:
- •Создание запроса непосредственно на форме в приложении Windows
- •Для добавления запроса в TableAdapter с помощью диалогового окна "Критерии поиска":
- •Редактировании запроса TableAdapter
- •Мастер настройки запроса адаптера таблицы
- •Запуск мастера настройки запросов адаптеров таблиц
- •Выбор подключения к данным
- •Сохранение строки подключения в файле конфигурации приложения
- •Использование инструкций sql
- •Создание новых хранимых процедур
- •Использование существующих хранимых процедур
- •Просмотр результатов работы мастера
- •Создание DataReader(ado.Net)
- •Навигация в объектах DataTableReader
- •Выбор между DataReader или DataSet
- •Окно Источники данных
- •Открытие окна источников данных
- •Заполнение окна источников данных
- •Создание элементов управления с привязкой данных
- •Создание элемента управления с привязкой данных, отображающего связанные записи
- •Команды, доступные в окне источников данных
- •Выбор типа источника данных
- •Выбор подключения к данным.
- •Сохранение строки подключения в файле конфигурации приложения
- •Выбор объектов базы данных
- •Выбор таблиц для кэширования (Visual Studio 2008 sp1)
- •Добавление веб-ссылки
- •Выбор объекта, к которому нужно осуществить привязку
- •Конструктор наборов данных
- •Создание объектов на рабочей поверхности конструктора
- •Создание набора данных
- •Создание набора данных с помощью мастера конфигурации источников данных
- •Создание набора данных с помощью конструктора наборов данных
- •Программные способы создания набора данных
- •Примеры
- •Связанные таблицы и объекты DataRelation
- •Отношения в наборах данных
- •Члены объекта DataRelation
- •ОбъектыDataRelationи ограничения
- •Правила целостности данных
- •Отношения, используемые только для ограничений
- •Навигация в DataRelations (ado.Net)
- •Заполнение набора данных
- •Заполнение набора данных с помощью адаптера таблицы TableAdapter
- •Заполнение набора данных с помощью адаптера данных DataAdapter
- •Редактирование данных в приложении
- •Вставка новой записи в типизированный набор данных
- •Вставка новой записи в нетипизированный набор данных
- •Редактирование строк в объекте DataTable
- •Поиск строки в типизированном наборе данных по известному значению первичного ключа
- •Поиск строк на основе значений в любом столбце
- •Редактирование записей в типизированном наборе данных (индекс строки неизвестен)
- •Редактирование записей в нетипизированных наборах данных (индекс строки неизвестен)
- •Редактирование строки в DataTable по известому индексу строки в типизированном наборе
- •Редактирование строки в DataTable по известому индексу строки в нетипизированном наборе
- •Удаление строк из объекта DataTable
- •Чтобы удалить записи из таблицы данных, выполните следующие действия:
- •Общие сведения о сохранении данных в наборах данных
- •Двухэтапные обновления
- •Слияние наборов данных
- •Ограничения на обновление
- •Ошибки при обновлении наборов данных
- •Ведение записей об изменениях
- •Свойство RowState
- •Перечисление DataRowVersion
- •Получение измененных записей
- •Внесение изменений в набор данных
- •Проверка данных
- •Как обновление передается источнику данных
- •Передача параметров
- •Обновление связанных таблиц
- •Сохранение данных с помощью методов dbDirect адаптера таблицы
- •Вставка новых записей в базу данных
- •Вставка новых записей с помощью адаптеров таблиц
- •Для вставки новых записей в базу данных с помощью метода TableAdapter.Update:
- •Вставка новых записей в базу данных с помощью метода TableAdapter.Insert:
- •Обновление данных на форме с помощью адаптера таблицы
- •Обновление двух связанных таблиц в наборе данных с помощью TableAdapter
- •Взаимодействие с базой данных через команды Вставка новых записей с помощью командных объектов
- •Объект DataView (ado.Net) DataView - класс
- •Создание объекта DataView на основе DataTable
- •DataTable.DefaultView - свойство
- •Примеры
- •DataView.RowFilter - свойство
- •Заметки
- •Примеры
- •DataView.Sort - свойство
- •Примеры
- •DataView.RowStateFilter - свойство
- •Значение свойства
- •Заметки
- •Примеры
- •DataViewкласс - примеры
- •DataView - члены
- •Конструкторы
- •Методы расширения
- •Свойства
- •События
- •Технология linq
- •Введение в технологию linq
- •Создание проекта linq
- •Процедуры добавления пространств имен и ссылок linq для платформы .Net Framework версии 3.5
- •Включение базовой функциональности linq
- •Введение в запросы linq (c#)
- •Три части операции запроса
- •Источник данных
- •Выполнение запроса Отложенное выполнение
- •Принудительное немедленное выполнение
- •Создание запросов linq на языке c#
- •Синтаксис запроса
- •Синтаксис метода
- •Смешанный синтаксис запроса и метода
- •Запрос в деталях (Руководство по программированию в c#) Что такое запрос и для чего он нужен
- •Выражение запроса
- •Переменная запроса
- •Явная и неявная типизация переменных запроса
- •Начало выражения запроса
- •Окончание выражения запроса
- •Предложение "group"
- •Предложение "select"
- •Продолжения с использованием ключевого слова "into"
- •Фильтрация, упорядочение и присоединение
- •Предложение "where"
- •Предложение "orderby"
- •Предложение "join"
- •Предложение "let"
- •Вложенные запросы в выражении запроса
- •Общие сведения о linq to DataSet
- •Запросы к наборам данных с помощью linq to DataSet
- •Многоуровневые приложения и linq to DataSet
- •Загрузка данных в DataSet
- •Запросы к одиночным таблицам (linq to DataSet)
- •Запрос к типизированным объектам DataSet
- •Универсальные методы Field и SetField (linq to DataSet)
- •Перекрестные запросы между таблицами (linq to DataSet)
- •Запросы linQtoSql
- •Общие сведения о linq to DataSet
- •Запросы к наборам данных с помощью linq to DataSet
- •Многоуровневые приложения и linq to DataSet
- •Запросы к одиночным таблицам (linq to DataSet)
- •Универсальные методы Field и SetField (linq to DataSet)
- •Создание объекта DataView (linq to DataSet)
- •Создание объекта DataView на основе запроса linq to DataSet
- •DataTableExtensions.AsDataView - метод (DataTable)
- •Примеры
- •Параметры
- •Возвращаемое значение
- •Примечание об использовании
- •Заметки
- •Фильтрация с помощью DataView (linq to DataSet)
- •Использование свойства RowFilter в контексте linq to DataSet
- •Очистка фильтра
- •Запрос к коллекции DataRowView в DataView
- •Как привязать объект DataView к элементу управления Windows Forms DataGridView
- •Соединение элемента управления DataGridView с объектом DataView
- •Производительность DataView
- •Механизм кэширования asp.Net
- •Связывание с данными и linq to DataSet
- •Приступая к работе (linq to sql)
- •Модель объектов linq to sql
- •Классы сущностей и баз данных linq to sql
- •Атрибут DatabaseAttribute
- •Атрибут TableAttribute
- •Атрибут ColumnAttribute
- •Сопоставление связи базы данных (linq to sql)
- •Хранимые процедуры баз данных и методы linq to sql.
- •Атрибут FunctionAttribute
- •Атрибут ParameterAttribute
- •Атрибут ResultTypeAttribute
- •Атрибут DataAttribute
- •Реляционный конструктор объектов
- •Открытие реляционного конструктора объектов
- •Создание и конфигурирование DataContext
- •Создание классов сущностей, которые сопоставляются таблицам бд или представлениям
- •Создание Object Data Source (Источника данных об объекте) и отображение данных на форме
- •Создание методов DataContext, которые вызывают сохраненные процедуры и функции
- •Конфигурирование Поведения обновления Класса сущностей
- •Как соединиться с базой данных (linq to sql)
- •Типичные действия по использованию linq to sql
- •Создание модели объектов
- •Запросы linQtoSql
- •Вставка
- •Обновление
- •Удаление
- •Непосредственное выполнение команд sql(linQtoSql)
- •Стратегии доступа к данным
- •Обработка событий DataTable (ado.Net)
- •Дополнительные связанные события
- •Последовательность операций
- •Метод Load
- •Удаление DataRow
- •Отключение ограничений при заполнении набора данных (Практическое руководство)
- •Чтобы приостановить ограничения на обновления программно
- •Чтобы приостановить ограничения на обновление с помощью конструктора наборов данных
- •Сведения об ошибке строки
- •Получение измененных строк (Практическое руководство).
- •Чтобы получить все измененные записи из набора данных
- •Чтобы получить все измененные записи из таблицы данных
- •Для получения всех записей, имеющих определенное состояние строки
Подключения на этапе разработки в обозревателе серверов/обозревателе баз данных
Обозреватель серверов/Обозреватель баз данныхпредоставляет способ создания подключений к источникам данных на этапе разработки. Это позволяет вести поиск доступных источников данных, отображать сведения о таблицах, столбцах и других содержащихся в них элементах, а также редактировать и создавать элементы базы данных.
Приложение напрямую не использует подключения, доступные в Обозревателе серверов/Обозревателе баз данных. Эти подключения используются Visual Studio для работы с базой данных во время разработки. Дополнительные сведения см. в разделе Средства Visual Database Tools.
Например, во время разработки можно использовать Обозреватель серверов/Обозреватель баз данных для создания подключения к базе данных. Впоследствии, при разработке формы, пользователь может просмотреть базу данных, выбрать столбцы из таблиц и перетащить их в Конструктор наборов данных. При этом в наборе данных создаетсяАдаптер таблицы. Коме того, программа также создает новый объект подключения (который является частью созданного адаптера таблицы).
Сведения о подключениях на этапе разработки сохраняются на локальном компьютере независимо от конкретного проекта или решения. Таким образом, если при работе над приложением подключение было установлено на этапе разработки, оно появляется в Обозревателе серверов/Обозревателе баз данных при каждом сеансе работы в Visual Studio (до тех пор, пока доступен сервер, на который указывает подключение). Дополнительные сведения об использовании Обозревателя серверов/Обозревателя баз данных и создании подключений во время разработки содержатся в разделе Практическое руководство. Добавление новых подключений к данным в Обозревателе серверов/Обозревателе баз данных.
Хранение данных в наборах данных
Большинство приложений, которые создаются для конечных пользователей, обеспечивают обработку информации, хранящейся в базах данных (складские, бухгалтерские, торговые, информационно-поисковые системы и т. п.). Это может быть небольшая система, работающая на локальном компьютере; система среднего класса, состоящая из десятка рабочих мест, объединенных локальной сетью; распределенная система, обеспечивающая доступ к данным сотням и тысячам пользователей через сеть Интернет. С точки зрения разработчика желательно иметь единый механизм и единый набор объектов, обеспечивающих доступ к данным, независимо от масштабности решаемой задачи. В технологии Microsoft.NET создана, достаточна гибкая и эффективная модель доступа к данным — ADO.NET, предоставляющая разработчикам набор объектов,на основе которых можно создавать приложения любого масштаба (от локальных до глобальных).
При разработке приложения с использованием ADO.NET существует несколько разных стратегий обработки данных. В некоторых случаях требуется просто отобразить в форме определенную информацию, хранящуюся на сервере локальной сети, в других случаях вам нужно обеспечить доступ к данным из разных офисов одной или нескольких компаний не только для чтения, но и для редактирования.
В объектной модели ADO.NET можно выделить несколько уровней.
Уровень данных.Это по сути дела базовый уровень, на котором располагаются сами данные (например, таблицы базы данных MS SQL Server). На данном уровне обеспечивается физическое хранение информации на магнитных носителях и манипуляция с данными на уровне исходных таблиц (выборка, сортировка, добавление, удаление, обновление и т. п.).
Уровень бизнес-логики. Это набор объектов, определяющих, с какой базой данных предстоит установить связь и какие действия необходимо будет выполнить с содержащейся в ней информацией. Для установления связи с базами данных используется объект DataConnection. Для хранения команд, выполняющих какие либо действия над данными, используется объект DataAdapter. И, наконец, если выполнялся процесс выборки информации из базы данных, для хранения результатов выборки используется объект DataSet или DataReader. Объект DataSet, по сути дела, представляет собой набор данных, "вырезанных" из таблиц основного хранилища, который может быть передан любой программе-клиенту, способной либо отобразить эту информацию конечному пользователю, либо выполнить какие-либо манипуляции с полученными данными. Объект DataReader используется для получения данных в однопроходном режиме только для чтения.
Уровень приложения. Это набор объектов, позволяющих хранить и отображать данные на компьютере конечного пользователя. Для хранения информации используется объектвнутреннийисточник данных, а для отображения данных имеется довольно большой набор элементов управления (DataGrid, TextBox, ComboBox, Label и т. д.). Напомним, что в Visual Studio.Net можно вести разработку двух типов приложений. В первую очередь это традиционные Windows-приложения (на основе Windows-форм), которые реализованы в виде ехе-файлов, запускаемых на компьютере пользователя. Ну и конечно, Web-приложения (на основе Web-форм), которые работают в оболочке браузера. Как видно из рис. 2, для хранения данных на уровне обоих типов приложений используется объект DataSet.
Обмен данными между приложениями и уровнем бизнес-логики происходит с использованием формата XML, а средой передачи данных служат либо локальная сеть (Интранет), либо глобальная сеть (Интернет).
Обычной моделью доступа к данным в приложениях Visual Studio является хранение их в наборах данных и использование адаптеров таблиц или адаптеров данных для их чтения и записи в базу данных. Наборы данных представляют собой объекты, содержащие таблицы данных, в которых можно временно хранить данные для их использования в приложении. Если ваше приложение требует работы с данными, можно загрузить их в набор данных. Данные для работы приложения в этом случае будут храниться в локальной памяти. Можно работать с данными в наборе данных, даже если приложение отключается от базы данных. Набор данных хранит информацию об изменениях своих данных. Так что обновления можно отслеживать и отправлять обратно в базу данных, когда ваше приложение вновь подключится к ней (рис. 2)
Рис. 2. Модель наборов данных в ADO.NET
Модель наборов данных имеет следующие преимущества:
Работа с несколькими таблицами.Набор данных может содержать несколько таблиц результатов, которые поддерживаются как отдельные объекты. Можно работать с отдельными таблицами или переходить от одной таблицы к другой, как от родительской к дочерней.
Работа с данными из нескольких внешних источников.В таблицах наборов данных могут одновременно содержаться данные из разных внешних источников (например, из разных баз данных, из файлов XML, электронных таблиц и т. д. — все в одном наборе данных). После того, как данные попадают в набор данных, можно управлять ими и устанавливать между ними связи в едином формате, как если бы они имели общий внешний источник.
Перемещение данных между уровнями в распределенном приложении.С помощью хранения данных в наборе данных можно легко перемещать их между уровнем представления, бизнес-уровнем и уровнем данных приложения.
Обмен данными с другими приложениями. Наборы данных позволяют реализовать эффективный способ обмена данными с другими компонентами приложения и с другими приложениями. Наборы данных включают широкую поддержку таких возможностей, как сериализация данных в формате XML, чтение и запись XML-схем.
Привязка данных.При работе с формами обычно проще привязывать элементы управления к данным из набора данных, чем программными средствами загружать значения данных в элементы управления после выполнения команды.
Сохранение данных для повторного использования.Наборы данных позволяют работать с одними и теме же записями несколько раз без повторного обращения к базе данных. С помощью определенных средств набора данных можно осуществлять сортировку и фильтрацию записей, а также использовать набор данных в качестве источника данных при подкачке.
Облегчение программирования.При работе с набором данных можно создать файл класса, предоставляющий структуру набора в виде объектов (например, к таблице Customers набора данных можно получить доступ как к объекту dataset.Customers). Это делает процесс программирования более простым, понятным и менее склонным к ошибкам. Все это поддерживается такими средствами Visual Studio, как IntelliSense, мастер настройки адаптеров данных и т. п.