Слайд 2Всегда используйте профайлер !
Позволяет обнаружить проблемные места на ранней стадии
Неоптимальный запрос (нужно

посмотреть execution plan)
Повторные вызовы одного и того же запроса
Неправильное использование Lazy Loading
т.д.
Слайд 3Использование SaveChanges
Стараемся вызывать один раз *
Unit Of Work паттерн
* не железное правило,

каждый раз думаем
Слайд 4Bulk Operations – боль EF
Сторонние библиотки (платные)
Stored procs
Raw SQL
SqlBulkCopy
Add vs AddRange
AutoDetectChangesEnabled

Слайд 7Lazy Loading – Проблема N+1 запросов
- Include
- Перестроить запрос
LINQ: отложенное выполнение

(не связано с EF изучить самостоятельно)
Слайд 8Быстрое чтение
AsNoTracking
var blogs = context.Blogs.AsNoTracking().ToList();

Слайд 9Проекции
Загружаем из базы только те поля, которые нам нужны
- Широкая таблица
- Неочевидный

пример (join)
Слайд 10IQueryable vs IEnumerable
Различия
IEnumerable doesn’t support lazy loading
IQueryable support lazy loading
Querying data

from a database, IEnumerable execute a select query on the server side, load data in-memory on a client-side and then filter data.
Querying data from a database, IQueryable execute the select query on the server side with all filters.