Язык программирования C#9 и платформа .NET5
![Язык программирования C#9 и платформа .NET5](/uploads/covers/2023-08-28/yazyk-programmirovaniya-c9-i-platforma-net5-201.jpg-205x.webp)
- Автор: Эндрю Троелсен
- Жанр: Базы данных
- Дата выхода: 2022
Читать книгу "Язык программирования C#9 и платформа .NET5"
Ограничения ключевого слова dynamic
Практическое использование ключевого слова dynamic
Роль исполняющей среды динамического языка
Роль деревьев выражений
Динамический поиск в деревьях выражений во время выполнения
Упрощение вызовов с поздним связыванием посредством динамических типов
Использование ключевого слова dynamic для передачи аргументов
Упрощение взаимодействия с СОМ посредством динамических данных (только Windows)
Роль основных сборок взаимодействия
Встраивание метаданных взаимодействия
Общие сложности взаимодействия с СОМ
Взаимодействие с СОМ с использованием динамических данных C#
Резюме
Глава 19
Причины для изучения грамматики языка CIL
Директивы, атрибуты и коды операций CIL
Роль директив CIL
Роль атрибутов CIL
Роль кодов операций СIL
Разница между кодами операций и их мнемоническими эквивалентами в СIL
Заталкивание и выталкивание: основанная на стеке природа CIL
Возвратное проектирование
Роль меток в коде CIL
Взаимодействие c CIL: модификация файла *.il
Компиляция кода CIL
Директивы и атрибуты CIL
Указание ссылок на внешние сборки в CIL
Определение текущей сборки в CIL
Определение пространств имен в CIL
Определение типов классов в CIL
Определение и реализация интерфейсов в CIL
Определение структур в CIL
Определение перечислений в CIL
Определение обобщений в CIL
Компиляция файла CILTypes.il
Соответствия между типами данных в библиотеке базовых классов .NET Core, C# и CIL
Определение членов типов в CIL
Определение полей данных в CIL
Определение конструкторов типа в CIL
Определение свойств в CIL
Определение параметров членов
Исследование кодов операций CIL
Директива .maxstack
Объявление локальных переменных в CIL
Отображение параметров на локальные переменные в CIL
Скрытая ссылка this
Представление итерационных конструкций в CIL
Заключительные слова о языке CIL
Динамические сборки
Исследование пространства имен System.Reflection.Emit
Роль типа System.Reflection.Emit.ILGenerator
Выпуск динамической сборки
Выпуск сборки и набора модулей
Роль типа ModuleBuilder
Выпуск типа HelloClass и строковой переменной-члена
Выпуск конструкторов
Выпуск метода SayHello()
Использование динамически сгенерированной сборки
Резюме
Часть VI
Глава 20
Исследование пространства имен System.IO
Классы Directory(Directorylnfо) и File(FileInfo)
Абстрактный базовый класс FileSystemInfo
Работа с типом DirectoryInfо
Перечисление файлов с помощью типа DirectoryInfо
Создание подкаталогов с помощью типа DirectoryInfo
Работа с типом Directory
Работа с типом DriveInfo
Работа с типом FileInfo
Метод FileInfo.Create()
Метод FileInfо.Open()
Методы FileInfо.OpenRead() и FileInfо.OpenWrite()
Метод FileInfо.OpenText()
Методы FileInfo.CreateText() и FileInfo.AppendText()
Работа с типом File
Дополнительные члены типа File
Абстрактный класс Stream
Работа с типом FileStream
Работа с типами StreamWriter и StreamReader
Запись в текстовый файл
Чтение из текстового файла
Прямое создание объектов типа StreamWriter/StreamReader
Работа с типами StringWriter и StringReader
Работа с типами BinaryWriter и BinaryReader
Программное слежение за файлами
Понятие сериализации объектов
Роль графов объектов
Создание примеров типов и написание операторов верхнего уровня
Сериализация и десериализация с помощью XmlSerializer
Управление генерацией данных XML
Сериализация объектов с использованием XmlSerializer
Сериализация коллекций объектов
Десериализация объектов и коллекций объектов
Сериализация и десериализация с помощью System.Text.Json
Управление генерацией данных JSON
Сериализация объектов с использованием JsonSerializer
Включение полей
Понятный для человека вывод данных JSON
Именование элементов JSON в стиле Pascal или в "верблюжьем" стиле
Обработка чисел с помощью JsonSerializer
Потенциальные проблемы, связанные с производительностью, при использовании JsonSerializerOption
Стандартные настройки свойств JsonSerializer для веб-приложений
Сериализация коллекций объектов
Десериализация объектов и коллекций объектов
Резюме
Глава 21
Сравнение ADO.NET и ADO
Поставщики данных ADO.NET
Поставщики данных ADO.NET
Типы из пространства имен System.Data
Роль интерфейса IDbConnection
Роль интерфейса IDbTransaction
Роль интерфейса IDbCommand
Роль интерфейсов IDbDataParameter и IDataParameter
Роль интерфейсов IDbDataAdapter и IDataAdapter
Роль интерфейсов IDataReader и IDataRecord
Абстрагирование поставщиков данных с использованием интерфейсов
Установка SQL Server и Azure Data Studio
Установка SQL Server
Установка SQL Server в контейнер Docker
Получение образа и запуск SQL Server 2019
Установка SQL Server 2019
Установка IDE-среды SQL Server
Подключение к SQL Server
Подключение к SQL Server в контейнере Docker
Подключение к SQL Server LocalDb
Подключение к любому другому экземпляру SQL Server
Восстановление базы данных AutoLot из резервной копии
Копирование файла резервной копии в имеющийся контейнер
Восстановление базы данных с помощью SSMS
Восстановление базы данных в экземпляр SQL Server (Docker)
Восстановление базы данных в экземпляр SQL Server (Windows)
Восстановление базы данных с помощью Azure Data Studio
Создание базы данных AutoLot
Создание базы данных
Создание таблиц
Создание таблицы Inventory
Создание таблицы Makes
Создание таблицы Customers
Создание таблицы Orders
Создание таблицы CreditRisks
Создание отношений между таблицами
Создание отношения между таблицами Inventory и Makes
Создание отношения между таблицами Inventory и Orders
Создание отношения между таблицами Orders и Customers
Создание отношения между таблицами Customers и CreditRisks
Создание хранимой процедуры GetPetName
Добавление тестовых записей
Записи таблицы Makes
Записи таблицы Inventory
Добавление тестовых записей в таблицу Customers
Добавление тестовых записей в таблицу Orders
Добавление тестовых записей в таблицу CreditRisks
Модель фабрики поставщиков данных ADO.NET
Полный пример фабрики поставщиков данных
Потенциальный недостаток модели фабрики поставщиков данных
Погружение в детали объектов подключений, команд и чтения данных
Работа с объектами подключений
Работа с объектами ConnectionStringBuilder
Работа с объектами команд
Работа с объектами чтения данных
Получение множества результирующих наборов с использованием объекта чтения данных
Работа с запросами создания обновления и удаления
Создание классов Car и CarViewModel
Добавление класса InventoryDal
Добавление конструкторов
Открытие и закрытие подключения
Добавление реализации IDisposable
Добавление методов выборки
Вставка новой записи об автомобиле
Создание строго типизированного метода InsertCar()
Добавление логики удаления
Добавление логики обновления
Работа с параметризированным и объектами команд
Указание параметров с использованием типа DbParameter
Обновление метода GetCar()
Обновление метода DeleteCar()
Обновление метода UpdateCarPetName()
Обновление метода InsertAuto()
Выполнение хранимой процедуры
Создание консольного клиентского приложения
Понятие транзакций базы данных
Основные члены объекта транзакции ADO.NET
Добавление метода транзакции в inventoryDal
Тестирование транзакции базы данных
Выполнение массового копирования с помощью ADO.NET
Исследование класса SqlBulkCopy
Создание специального класса чтения данных
Выполнение массового копирования
Тестирование массового копирования
Резюме
Часть VII
Глава 22
Инструменты объектно-реляционного отображения
Роль Entity Framework Core
Строительные блоки Entity Framework Core
Класс DbContext
Создание класса, производного от DbContext
Конфигурирование экземпляра DbContext
Фабрика DbContext этапа проектирования
Метод OnModelCreating()
Сохранение изменений
Поддержка транзакций и точек сохранения
Транзакции и стратегии выполнения
События SavingChanges/SavedChanges
Класс DbSet<T>
Типы запросов
Гибкое сопоставление с запросом или таблицей
Экземпляр ChangeTracker
События ChangeTracker
Сброс состояния DbContext
Сущности
Сопоставление свойств со столбцами
Сопоставление классов с таблицами
Сопоставление "таблица на иерархию" (ТРН)
Сопоставление "таблица на тип" (ТРТ)
Навигационные свойства и внешние ключи
Отсутствие свойств для внешних ключей
Отношения "один ко многим"
Отношения "один к одному"
Отношения "многие ко многим" (нововведение в версии EF Core 5)
Каскадное поведение
Необязательные отношения
Обязательные отношения
Соглашения, связанные с сущностями
Отображение свойств на столбцы
Аннотации данных Entity Framework
Аннотации и навигационные свойства
Интерфейс Fluent API
Отображение классов и свойств
Стандартные значения
Вычисляемые столбцы
Отношения "один ко многим"
Отношения "один к одному"
Отношения "многие ко многим"
Соглашения, аннотации данных и Fluent API — что выбрать?
Выполнение запросов
Смешанное выполнение на клиентской и серверной сторонах
Сравнение отслеживаемых и неотслеживаемых запросов
Важные функциональные средства EF Core
Обработка значений, генерируемых базой данных
Проверка параллелизма
Устойчивость подключений
Связанные данные
Энергичная загрузка
Фильтрованные включаемые данные
Энергичная загрузка с разделением запросов
Явная загрузка
Ленивая загрузка
Глобальные фильтры запросов
Глобальные фильтры запросов на навигационных свойствах
Явная загрузка с глобальными фильтрами запросов