Войти



Поиск

Реклама

Полезное:

Новые статьи

Опечатка?

Выделите текст и нажмите Shift+Enter.
И мы в ближайшее время ее исправим!

Счетчики


Создание вспомогательных методов доступа к данным

На данном этапе у нас есть библиотека классов уровня доступа к данным с определениями типов для набора CustomersDataSet, который может содержать данные из таблиц Customers, Orders и Order_Details, а также поддерживает реляционные связи между этими таблицами. Для каждой из таблиц у нас есть адаптер таблицы, что позволяет выполнять операции Fill и Update для любой из таблиц набора. Весь этот код написал за нас конструктор наборов данных. Мы же расширили класс адаптера для таблицы Customers, сделав возможным применение транзакций обновления и добавили вспомогательный класс, позволяющий извне обращаться к соединению, используемому экземпляром CustomersTableAdapter.

Что еще может нам потребоваться? У в наборе данных нас есть три таблицы, находящихся в иерархических отношениях. Таблица Orders является дочерней для Customers, a Order Details является дочерней для Orders. Во многих ситуациях было бы удобней помещать данные в эти таблицы одновременно, чем создавать три экземпляра адаптера таблицы и к тому же следить, чтобы они заполняли таблицы в правильном порядке, чтобы не нарушались ограничения внешних ключей. Чтобы этого избежать, можно ввести дополнительный код в уровень доступа к данным, который определит вспомогательные методы для заполнения всего набора данных посредством единственного вызова. Этот код можно организовать по-разному. Я собираюсь реализовать его, как фабричный метод самого класса CustomersDataSet, введя его в определение неполного класса.

Если вы добавите в проект новый файл класса и назовете его CustomersDataSet.cs, то можете определить следующий неполный класс в качестве расширения класса типизированного набора данных:

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

CustomersDataSet customers = CustomersDataSet.GetCustomers ();

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




Newer news items:
Older news items:

 
Главная Страница Контактная Информация Поиск по сайту Контактная Информация Поиск по сайту