Перейти к содержанию
# RAIMBALT Learn LEARN · PRACTICE · BUILD
Войти Начать обучение
← Все курсы
EF · Средний

Entity Framework Core + MySQL

Полный последовательный маршрут: теория, пример, ошибка новичка, практика, самопроверка и проектный шаг в каждом уроке.

71 уроков 17 модулейкаталог доступен без входа
КАК ПРОХОДИТЬ КУРС

Не листай уроки как обычный справочник

Переходи дальше только после того, как можешь воспроизвести идею самостоятельно и понимаешь, зачем она нужна.

01Понятьновую идею
02Повторитьпример руками
03Изменитьи проверить эффект
04Решитьсамостоятельно
05Проверитьпонимание
06Применитьв проекте
КОНТРОЛЬ ЗНАНИЙ

Контрольные точки и итоговый экзамен

После модулей закрепляй материал практикой и проверками. Курс считается освоенным только после выполнения критериев, а не после простого открытия всех страниц.

Войти для прохождения →
ПРОГРАММА

Содержание курса

0 из 71 подтверждено
МОДУЛЬ

Самый старт

0 / 1 уроков
01

Что такое ORM и зачем нужен EF Core

EF Core связывает C#-объекты и таблицы БД.

Изучить →
МОДУЛЬ

Старт

0 / 1 уроков
02

Установка EF Core и Pomelo

EF Core — ORM, а Pomelo.EntityFrameworkCore.MySql — provider, который переводит EF-операции в SQL, понятный MySQL.

Изучить →
МОДУЛЬ

Модель

0 / 5 уроков
03

Entity-классы

Entity-класс представляет данные предметной сущности, которые EF Core сопоставляет со строками таблицы.

Изучить →
04

DbContext: единица работы с БД

DbContext связывает модель EF Core, connection и операции с данными.

Изучить →
05

DbSet<TEntity>: набор сущностей

DbSet представляет точку входа для запросов и изменений сущностей.

Изучить →
20

Fluent API

Fluent API позволяет явно настроить таблицы, ключи, длины и связи.

Изучить →
63

Value converters и owned/value objects

Value converters и owned/value objects: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.

Изучить →
МОДУЛЬ

Подключение

0 / 1 уроков
06

Connection string и секреты

Строка подключения сообщает EF, где MySQL и под каким пользователем подключаться.

Изучить →
МОДУЛЬ

Запросы

0 / 10 уроков
07

ToListAsync и FirstOrDefaultAsync

Запрос EF выполняется в БД, когда материализуется.

Изучить →
08

Where переводится в SQL

LINQ к DbSet — это не обычный List: EF пытается перевести выражение в SQL.

Изучить →
09

Select: загружаем только нужные поля

Проекция уменьшает объём данных и делает намерение запроса яснее.

Изучить →
10

AnyAsync и CountAsync

Для проверки существования не нужно загружать все строки.

Изучить →
60

AsNoTracking и tracking identity

AsNoTracking и tracking identity: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.

Изучить →
61

Проекции вместо Include всего графа

Проекции вместо Include всего графа: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.

Изучить →
62

Split queries и cartesian explosion

Split queries и cartesian explosion: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.

Изучить →
65

Проекции вместо загрузки сущности

Проекции вместо загрузки сущности: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.

Изучить →
66

N+1 запросов

N+1 запросов: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.

Изучить →
67

AsSplitQuery

AsSplitQuery: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.

Изучить →
МОДУЛЬ

Производительность

0 / 3 уроков
11

AsNoTracking для чтения

Tracking нужен для изменений, но отчётным read-only запросам часто не требуется.

Изучить →
55

N+1 queries

N+1 queries — важная тема раздела «Производительность». В этом уроке ты сначала разберёшь смысл, затем увидишь рабочий пример и сразу закрепишь материал самостоятельно.

Изучить →
56

Пагинация keyset

Пагинация keyset — важная тема раздела «Производительность». В этом уроке ты сначала разберёшь смысл, затем увидишь рабочий пример и сразу закрепишь материал самостоятельно.

Изучить →
МОДУЛЬ

CRUD

0 / 4 уроков
12

Add и SaveChangesAsync

Добавление entity только сообщает DbContext о новой записи; SQL выполняется при SaveChanges.

Изучить →
13

Tracking и обновление

Загруженная tracked-entity отслеживает изменения свойств.

Изучить →
14

Remove и удаление

Remove помечает entity на удаление, SQL выполняется при SaveChanges.

Изучить →
15

SaveChangesAsync как граница записи

Несколько tracked-изменений могут сохраниться одним SaveChanges.

Изучить →
МОДУЛЬ

Связи

0 / 4 уроков
16

One-to-many

Один Client может иметь много Orders.

Изучить →
17

Many-to-many

Многие студенты изучают многие курсы — это связь M:N.

Изучить →
18

Navigation properties

Navigation делает связи удобными в объектной модели, но не означает автоматическую загрузку данных.

Изучить →
19

Include и ThenInclude

Include загружает связанные данные, но слишком широкий Include может быть дорогим.

Изучить →
МОДУЛЬ

EF Core + MySQL: профессиональный уровень

0 / 34 уроков
21

Change Tracker

Тема «Change Tracker» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
22

EntityState

Тема «EntityState» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
23

SaveChanges как unit of work

Тема «SaveChanges как unit of work» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
24

Миграции

Тема «Миграции» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
25

Migration history

Тема «Migration history» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
26

Seed data

Тема «Seed data» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
27

One-to-one

Тема «One-to-one» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
28

Many-to-many

Тема «Many-to-many» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
29

Delete behavior

Тема «Delete behavior» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
30

Owned/value-like data

Тема «Owned/value-like data» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
31

Projection вместо лишнего Include

Тема «Projection вместо лишнего Include» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
32

Filtered Include

Тема «Filtered Include» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
33

Split query

Тема «Split query» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
34

Compiled query: когда не нужен

Тема «Compiled query: когда не нужен» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
35

Индексы через модель

Тема «Индексы через модель» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
36

Логирование SQL

Тема «Логирование SQL» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
37

N+1: диагностика

Тема «N+1: диагностика» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
38

Пагинация Offset

Тема «Пагинация Offset» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
39

Keyset pagination

Тема «Keyset pagination» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
40

Явная транзакция

Тема «Явная транзакция» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
41

Concurrency

Тема «Concurrency» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
42

DbContext lifetime

Тема «DbContext lifetime» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
43

Repository поверх EF: когда полезен

Тема «Repository поверх EF: когда полезен» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
44

Specification/query object

Тема «Specification/query object» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
45

Типы .NET ↔ MySQL

Тема «Типы .NET ↔ MySQL» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
46

Decimal precision

Тема «Decimal precision» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
47

DateTime и UTC

Тема «DateTime и UTC» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
48

Connection resilience

Тема «Connection resilience» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
49

Параметры и SQL injection

Тема «Параметры и SQL injection» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
50

Тесты запросов

Тема «Тесты запросов» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
51

Миграции при развёртывании

Тема «Миграции при развёртывании» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
52

Backup перед schema change

Тема «Backup перед schema change» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
53

Slow query → LINQ

Тема «Slow query → LINQ» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
54

Итог EF Core + MySQL

Тема «Итог EF Core + MySQL» нужна не для запоминания термина, а чтобы решать конкретную задачу в реальном проекте.

Изучить →
МОДУЛЬ

Диагностика

0 / 1 уроков
57

SQL logging

SQL logging — важная тема раздела «Диагностика». В этом уроке ты сначала разберёшь смысл, затем увидишь рабочий пример и сразу закрепишь материал самостоятельно.

Изучить →
МОДУЛЬ

Тестирование

0 / 1 уроков
58

SQLite/InMemory против реальной БД

SQLite/InMemory против реальной БД — важная тема раздела «Тестирование». В этом уроке ты сначала разберёшь смысл, затем увидишь рабочий пример и сразу закрепишь материал самостоятельно.

Изучить →
МОДУЛЬ

Финал

0 / 1 уроков
59

Data access review

Data access review — важная тема раздела «Финал». В этом уроке ты сначала разберёшь смысл, затем увидишь рабочий пример и сразу закрепишь материал самостоятельно.

Изучить →
МОДУЛЬ

Production

0 / 1 уроков
64

Compiled queries и pooling: только после профилирования

Compiled queries и pooling: только после профилирования: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.

Изучить →
МОДУЛЬ

Изменения

0 / 1 уроков
68

Change Tracker и состояние сущностей

Change Tracker и состояние сущностей: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.

Изучить →
МОДУЛЬ

Конкуренция

0 / 1 уроков
69

Optimistic concurrency token

Optimistic concurrency token: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.

Изучить →
МОДУЛЬ

Миграции

0 / 1 уроков
70

Миграции в production

Миграции в production: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.

Изучить →
МОДУЛЬ

Архитектура

0 / 1 уроков
71

DbContext как Unit of Work

DbContext как Unit of Work: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.

Изучить →