
- •1. Жизненный цикл объекта.
- •2.Делегаты. Назначение, синтаксис объявления, использование делегата. Событийная модель.
- •3. События. Объявление события. Шаблон проектирования события в классе. Свойство для безопасной работы с событиями. Безопасный вызов события в многопоточном программировании.
- •4. Обобщенные классы. Объявление и детализация класса типами пользователя.
- •5. Обобщенные методы. Объявление и детализация методов типами пользователя.
- •6. Ограничения на параметры в обобщенных классах и функциях.
- •7. Типы, допускающие значение null
- •8. Коллекции и итераторы. Оператор yield
- •9.Потоки ввода/вывода в c#. Создание объекта потока и работа с ним. Текстовые, бинарные потоки, потоки со сжатием данных.
- •11. Исключения. Создание класса пользовательского исключения. Генерация и перехват исключения.
- •12. Рефлексия типов. Класс типа Type. Методы и свойства класса.
- •13. Сборки. Статическое и динамическое связывание сборок. Класс сборки Assembly.
- •14. Позднее связывание. Класс System.Activator. Создание экземпляра объекта путем позднего связывания. Вызов методов объекта путем позднего связывания.
- •15. Атрибуты. Назначение атрибутов. Базовый класс атрибута. Аннотирование класса атрибутами.
- •16. Расширяющие методы.
- •17. Анонимные методы. Объявление и использование.
- •18. Захват переменных анонимными методами. Цепочка вызовов.
- •20. Захват переменных в лямбда-выражениях. Рекурсивный вызов в лямбда-выражениях. Анонимная рекурсия.
- •21. Выражения и деревья выражений. Стандартные делегаты, используемые с выражениями и деревьями выражений.
- •22. Комбинирование выражений посредством класса InvocatedExpression.
- •23. Язык интегрированных запросов linq. Назначение, технические средства для реализации языка. Группы языка linq.
- •24. Linq to Objects. Вид запроса. Вызов цепочек расширяющих методов. Языковые конструкции для кодирования запроса. Отложенное и неотложенное выполнение запроса.
- •25. Конструкция from…select… Разделы конструкции. Условия. Проекция. Анонимные типы данных.
- •26. Конструкция from…group… Разделы конструкции. Условия. Ключи группировки. Получение ключа в результате-выборке.
- •28. Linq to Objects. Расширяющие методы для преобразования типов, операций со множествами, преобразования в один элемент.
- •29. Технология linq to sql. Назначение технологии. Класс контекста данных и основные атрибуты для создания контекста данных.
- •30. Создание и подключение класса контекста данных к базе данных. Шаблон программирования при добавлении данных в объект контекста данных.
30. Создание и подключение класса контекста данных к базе данных. Шаблон программирования при добавлении данных в объект контекста данных.
В технологии LINQ to SQL ключевым классом для объекта реляционного связывания является класс DataContext (класс контекста данных). DataContext – класс, соединяющий с БД, отслеживающий то, что мы изменяем, и обновляющий БД при вызове метода SubmitChanges. Сохраненные процедуры можно добавлять в реляционный конструктор объектов и выполнять как обычные методы DataContext. Сохраненные процедуры могут также использоваться для отмены поведения по умолчанию среды выполнения LINQ to SQL, которая выполняет операции Вставки, Обновления, Удаления, когда изменения сохраняются из классов сущностей в базу данных (например, при вызове метода SubmitChanges). По умолчанию, логика обновления базы данных (Вставки, Обновления и Удаления) с изменениями данных классов сущностей LINQ to SQL обеспечивается средой выполнения LINQ to SQL. Среда выполнения по умолчанию создает команды Вставить, Обновить и Удалить, основываясь на схеме таблицы (определения столбцов и информация о первичных ключах). Создание и конфигурирование DataContext. После добавления элемента LINQ to SQL Classes в проект и открытия Сред. Объектно-реляционный конструктор, пустая область конструктора представляет пустой DataContext, готовый к конфигурированию. DataContext конфигурируется с информацией о подключении, предоставленной первым элементом, который был перетащен в область конструктора. Поэтому DataContext конфигурируется с использованием информации о подключении из первого перемещенного в область конструктора элемента.
Вставки. Первый шаг при вставке записи в БД – создание DataContext. Второй – создание экземпляра сущностного объекта из сущностного класса. Третий – вставка этого сущностного объекта в соответствующую коллекцию таблицы. Четвертый – вызов метода SubmitChanges на объекте DataContext.
Пример вставки записи в БД посредством вставки сущностного объекта в Table<T>:
1. Создание DataContext (Northwind db = new Northwind;) 2. Создание экземпляра сущностного объекта (Customer cust = new Customer{CustomerID = “Иванов”, CompanyName = “Иванов Wranglers”, ContactName = “Иван Иванович”, City = “Гродно”, Country = “Беларусь”,};) 3. Добавление сущностного объекта в таблицу Customers (db.Customers.InsertOnSubmit (cust);) 4. Вызов метода SubmitChanges (db.SubmitChanges( );) 5. Опрос записи (Customer customer = db.Customers.Where (c=> c.CustomerID == “Иванов”).First( ); Console.WriteLine (“{0} – {1}”, customer.CompanyName, customer. ContactName);) Эта часть кода просто восстанавливает БД, чтобы можно было запустить пример снова (Console.WriteLine(“Удалить добавленного заказчика Иванов ”); db.Customers.DeleteOnSubmit (cust); db.SubmitChanges( );)
Описание: во-первых, создаем экземпляр объекта Northwind, чтобы иметь объект DataContext на БД Northwind. Во-вторых, создаем экземпляр объекта Customer и наполняем его. В-третьих, вставляем созданный экземпляр Customer в таблицу Customers типа Table< Customer>, в класс Northwind DataContext . В-четвертых, вызываем метод SubmitChanges для сохранения вновь созданного объекта Customer в БД. В-пятых, запрашиваем обратно из БД только что вставленную запись о заказчике, чтобы доказать, что она на самом деле была вставлена.