Язык программирования C#9 и платформа .NET5
- Автор: Эндрю Троелсен
- Жанр: Базы данных
- Дата выхода: 2022
Читать книгу "Язык программирования C#9 и платформа .NET5" полностью
Выполнение низкоуровневых запросов SQL с помощью LINQ
Пакетирование операторов
Принадлежащие сущностные типы
Сопоставление с функциями базы данных
Команды CLI глобального инструмента EF Core
Команды для управления миграциями
Команда add
Исключение таблиц из миграций
Команда remove
Команда list
Команда script
Команды для управления базой данных
Команда drop
Команда update
Команды для управления типами DbContext
Команда scaffold
Резюме
Глава 23
"Сначала код" или "сначала база данных"
Создание проектов AutoLot.Dal и AutoLot.Models
Создание шаблонов для класса, производного от DbContext, и сущностных классов
Переключение на подход "сначала код"
Создание фабрики экземпляров класса, производного от DbContext, на этапе проектирования
Создание начальной миграции
Применение миграции
Обновление модели
Сущности
Класс BaseEntity
Принадлежащий сущностный класс Person
Сущность Car(Inventory)
Сущность Customer
Сущность Make
Сущность CreditRisk
Сущность Order
Сущность SeriLogEntry
Класс ApplicationDbContext
Обновление кода Fluent API
Сущность SeriLogEntry
Сущность CreditRisk
Сущность Customer
Сущность Make
Сущность Order
Сущность Car
Специальные исключения
Переопределение метода SaveChanges()
Обработка событий DbContext и ChangeTracker
Создание миграции и обновление базы данных
Добавление представления базы данных и хранимой процедуры
Добавление класса MigrationHelpers
Обновление и применение миграции
Добавление модели представления
Добавление класса модели представления
Добавление класса модели представления к ApplicationDbContext
Добавление хранилищ
Добавление базового интерфейса IRepo
Добавление класса BaseRepo
Реализация метода SaveChanges()
Реализация общих методов чтения
Реализация методов добавления, обновления и удаления
Интерфейсы хранилищ, специфичных для сущностей
Интерфейс хранилища данных об автомобилях
Интерфейс хранилища данных о кредитных рисках
Интерфейс хранилища данных о заказчиках
Интерфейс хранилища данных о производителях
Интерфейс хранилища данных о заказах
Реализация классов хранилищ, специфичных для сущностей
Хранилище данных об автомобилях
Хранилище данных о кредитных рисках
Хранилище данных о заказчиках
Хранилище данных о производителях
Хранилище данных о заказах
Программная работа с базой данных и миграциями
Удаление, создание и очистка базы данных
Инициализация базы данных
Создание выборочных данных
Загрузка выборочных данных
Настройка тестов
Создание проекта
Конфигурирование проекта
Создание класса TestHelpers
Добавление класса BaseTest
Добавление вспомогательных методов для выполнения тестов в транзакциях
Добавление класса тестовой оснастки EnsureAutoLotDatabase
Добавление классов интеграционных тестов
Тестовые методы [Fact] и [Theory]
Выполнение тестов
Запрашивание базы данных
Состояние сущности
Запросы LINQ
Выполнение запросов LINQ
Получение всех записей
Фильтрация записей
Сортировка записей
Сортировка записей в обратном порядке
Извлечение одиночной записи
Использование First()/FirstOrDefault()
Использование Last()/LastOrDefault()
Использование Single()/SingleOrDefault()
Глобальные фильтры запросов
Отключение глобальных фильтров запросов
Фильтры запросов для навигационных свойств
Энергичная загрузка связанных данных
Разделение запросов к связанным данным
Фильтрация связанных данных
Явная загрузка связанных данных
Явная загрузка связанных данных с фильтрами запросов
Выполнение запросов SQL с помощью LINQ
Методы агрегирования
Any() и All()
Получение данных из хранимых процедур
Создание записей
Состояние сущности
Добавление одной записи
Добавление одной записи с использованием метода Attach()
Добавление нескольких записей одновременно
Соображения относительно столбца идентичности при добавлении записей
Добавление объектного графа
Обновление записей
Состояние сущности
Обновление отслеживаемых сущностей
Обновление неотслеживаемых сущностей
Проверка параллелизма
Удаление записей
Состояние сущности
Удаление отслеживаемых сущностей
Удаление неотслеживаемых сущностей
Перехват отказов каскадного удаления
Проверка параллелизма
Резюме
Часть VIII
Глава 24
Побудительные причины создания WPF
Унификация несходных API-интерфейсов
Обеспечение разделения обязанностей через XAML
Обеспечение оптимизированной модели визуализации
Упрощение программирования сложных пользовательских интерфейсов
Исследование сборок WPF
Роль класса Application
Построение класса приложения
Перечисление элементов коллекции Windows
Роль класса Window
Роль класса System.Windows.Controls.ContentControl
Роль класса System.Windows.Controls.Control
Роль класса System.Windows.FrameworkElement
Роль класса System.Windows.UIElement
Роль класса System.Windows.Media.Visual
Роль класса System.Windows.DependencyObject
Роль класса System.Windows.Threading.DispatcherObject
Синтаксис XAML для WPF
Введение в Kaxaml
Пространства имен XML и "ключевые слова" XAML
Управление видимостью классов и переменных-членов
Элементы XAML, атрибуты XAML и преобразователи типов
Понятие синтаксиса "свойство-элемент" в XAML
Понятие присоединяемых свойств XAML
Понятие расширений разметки XAML
Построение приложений WPF с использованием Visual Studio
Шаблоны проектов WPF
Панель инструментов и визуальный конструктор/редактор XAML
Установка свойств с использованием окна Properties
Обработка событий с использованием окна Properties
Обработка событий в редакторе XAML
Окно Document Outline
Включение и отключение отладчика XAML
Исследование файла Арр.xaml
Отображение разметки XAML окна на код C#
Роль BAML
Разгадывание загадки Main()
Взаимодействие с данными уровня приложения
Обработка закрытия объекта Window
Перехват событий мыши
Перехват событий клавиатуры
Резюме
Глава 25
Обзор основных элементов управления WPF
Элементы управления для работы с Ink API
Элементы управления для работы с документами WPF
Общие диалоговые окна WPF
Краткий обзор визуального конструктора WPF в Visual Studio
Работа с элементами управления WPF в Visual Studio
Работа с окном Document Outline
Управление компоновкой содержимого с использованием панелей
Позиционирование содержимого внутри панелей Canvas
Позиционирование содержимого внутри панелей WrapPanel
Позиционирование содержимого внутри панелей StackPanel
Позиционирование содержимого внутри панелей Grid
Установка размеров столбцов и строк в панели Grid
Панели Grid с типами GridSplitter
Позиционирование содержимого внутри панелей DockPanel
Включение прокрутки в типах панелей
Конфигурирование панелей с использованием визуальных конструкторов Visual Studio
Построение окна с использованием вложенных панелей
Построение системы меню
Визуальное построение меню
Построение панели инструментов
Построение строки состояния
Завершение проектирования пользовательского интерфейса
Реализация обработчиков событий MouseEnter/MouseLeave
Реализация логики проверки правописания
Понятие команд WPF
Внутренние объекты команд
Подключение команд к свойству Command
Подключение команд к произвольным действиям
Работа с командами Open и Save
Понятие маршрутизируемых событий
Роль пузырьковых маршрутизируемых событий
Продолжение или прекращение пузырькового распространения
Роль туннельных маршрутизируемых событий
Более глубокое исследование API-интерфейсов и элементов управления WPF
Работа с элементом управления TabControl
Построение вкладки Ink API
Проектирование панели инструментов
Элемент управления RadioButton
Добавление кнопок сохранения, загрузки и удаления
Добавление элемента управления InkCanvas
Предварительный просмотр окна
Обработка событий для вкладки Ink API
Добавление элементов управления в панель инструментов
Элемент управления InkCanvas
Элемент управления ComboBox
Сохранение, загрузка и очистка данных InkCanvas
Введение в модель привязки данных WPF
Построение вкладки Data Binding
Установка привязки данных
Свойство DataContext
Форматирование привязанных данных
Преобразование данных с использованием интерфейса IValueConverter
Установление привязок данных в коде
Построение вкладки DataGrid
Роль свойств зависимости
Исследование существующего свойства зависимости
Важные замечания относительно оболочек свойств CLR
Построение специального свойства зависимости
Добавление процедуры проверки достоверности данных
Реагирование на изменение свойства
Резюме
Глава 26
Понятие служб визуализации графики WPF
Варианты графической визуализации WPF
Визуализация графических данных с использованием фигур
Добавление прямоугольников, эллипсов и линий на поверхность Canvas
Удаление прямоугольников, эллипсов и линий с поверхности Canvas
Работа с элементами Polyline и Polygon
Работа с элементом Path
"Мини-язык" моделирования путей
Кисти и перья WPF
Конфигурирование кистей с использованием Visual Studio
Конфигурирование кистей в коде
Конфигурирование перьев
Применение графических трансформаций
Первый взгляд на трансформации
Трансформация данных Canvas
Работа с редактором трансформаций Visual Studio
Построение начальной компоновки
Применение трансформаций на этапе проектирования
Трансформация холста в коде
Визуализация графических данных с использованием рисунков и геометрических объектов