SlideShare a Scribd company logo
1 of 19
Готовим Entity Framework.
Рецепты холостяка, а так же
дегустация готовых блюд
Игорь Лужанский и Олег Боднар | Львов | 21 декабря
Содержание
• История ингредиента
• Выбираем правильную кулинарную школу
• От чего зависит вкус готового блюда ?
• Рецепты высокой производительности
Пользоваться можно начиная с 5.0
Содержание
• История ингредиента
• Выбираем правильную кулинарную школу
• От чего зависит вкус готового блюда ?
• Рецепты высокой производительности
Code first или Database first ?
Вот в чем вопрос….
Для тех кто не знает….
Code first. За что мы его любим
• Автоматическое обновление базы
• Автоматическое создание индексов
• Высокая скорость разработки
• Наличие миграций
Code first. С чем надо быть осторожным
• Легко сделать базу не валидной
Database first. Для смельчаков
• Всегда валидная модель
• Полный доступ ко всем возможностям базы
Database first. Что нас напрягает
• Необходимость поддерживать базу
Совет от шеф повара
Используйте code first только после того как
познали database first
Содержание
• История ингредиента
• Выбираем правильную кулинарную школу
• От чего зависит вкус готового блюда ?
• Рецепты высокой производительности
Entity Framework не всегда виноват
• Query
• ORM
• Database
• Data Transfer
Содержание
• История ингредиента
• Выбираем правильную кулинарную школу
• От чего зависит вкус готового блюда ?
• Рецепты высокой производительности
Рецепт 1. Для выборки данных
• AsNoTracking – метод который позволяет не мониторить
изменения в дата сетте
Рецепт 2. Для минимизации запросов
• Использовать ToList, First, Signle, foreach and etc. после
того как сформирован запрос
• Отключить Lazy Loading
• Использовать хранимые процедуры для возвращения
нескольких результатов
Рецепт 3. Вставка более 100 записей
• Использовать SqlBulkCopy
• Готовые реализации: EntityFramework.Utilities
Рецепт 4. Необходимо выполнить 2
отдельных запроса
• Не использовать Include, если:
• Получаем много записей
Спасибо!!!

More Related Content

Similar to Готовим Entity Framework. Рецепты для холостяков

Devconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как кодDevconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как кодIgor Kurochkin
 
Тестируем инфраструктуру как код
Тестируем инфраструктуру как кодТестируем инфраструктуру как код
Тестируем инфраструктуру как кодAndrey Tokarchuk
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"Yandex
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web apiIgor Lyubin
 
Как автоматизировать комплексные системы
Как автоматизировать комплексные системыКак автоматизировать комплексные системы
Как автоматизировать комплексные системыSQALab
 
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)Ontico
 
Путь мониторинга: модульность, гибкость, devops
Путь мониторинга: модульность, гибкость, devopsПуть мониторинга: модульность, гибкость, devops
Путь мониторинга: модульность, гибкость, devopsVsevolod Polyakov
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Готовим тестируемую инфраструктуру с Chef
Готовим тестируемую инфраструктуру с ChefГотовим тестируемую инфраструктуру с Chef
Готовим тестируемую инфраструктуру с ChefSQALab
 
Rootconf-2015 Тестируем инфраструктуру как код
Rootconf-2015 Тестируем инфраструктуру как кодRootconf-2015 Тестируем инфраструктуру как код
Rootconf-2015 Тестируем инфраструктуру как кодIgor Kurochkin
 
Тестируем инфраструктуру как код / Игорь Курочкин (Express 42)
Тестируем инфраструктуру как код / Игорь Курочкин (Express 42)Тестируем инфраструктуру как код / Игорь Курочкин (Express 42)
Тестируем инфраструктуру как код / Игорь Курочкин (Express 42)Ontico
 
Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Sergey Ryabenko
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Dmitry Buzdin
 
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"SQALab
 
Автостопом по багтрекингам
Автостопом по багтрекингамАвтостопом по багтрекингам
Автостопом по багтрекингамTatiana Borolyuk
 
автостопом по багтрекингам
автостопом по багтрекингамавтостопом по багтрекингам
автостопом по багтрекингамSergey Oreshkov
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
Наталья Руколь (Лаборатория Качества)
Наталья Руколь (Лаборатория Качества)Наталья Руколь (Лаборатория Качества)
Наталья Руколь (Лаборатория Качества)Ontico
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 

Similar to Готовим Entity Framework. Рецепты для холостяков (20)

Devconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как кодDevconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как код
 
Тестируем инфраструктуру как код
Тестируем инфраструктуру как кодТестируем инфраструктуру как код
Тестируем инфраструктуру как код
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
 
Как автоматизировать комплексные системы
Как автоматизировать комплексные системыКак автоматизировать комплексные системы
Как автоматизировать комплексные системы
 
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
 
Путь мониторинга: модульность, гибкость, devops
Путь мониторинга: модульность, гибкость, devopsПуть мониторинга: модульность, гибкость, devops
Путь мониторинга: модульность, гибкость, devops
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Готовим тестируемую инфраструктуру с Chef
Готовим тестируемую инфраструктуру с ChefГотовим тестируемую инфраструктуру с Chef
Готовим тестируемую инфраструктуру с Chef
 
Rootconf-2015 Тестируем инфраструктуру как код
Rootconf-2015 Тестируем инфраструктуру как кодRootconf-2015 Тестируем инфраструктуру как код
Rootconf-2015 Тестируем инфраструктуру как код
 
Тестируем инфраструктуру как код / Игорь Курочкин (Express 42)
Тестируем инфраструктуру как код / Игорь Курочкин (Express 42)Тестируем инфраструктуру как код / Игорь Курочкин (Express 42)
Тестируем инфраструктуру как код / Игорь Курочкин (Express 42)
 
Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
 
Автостопом по багтрекингам
Автостопом по багтрекингамАвтостопом по багтрекингам
Автостопом по багтрекингам
 
автостопом по багтрекингам
автостопом по багтрекингамавтостопом по багтрекингам
автостопом по багтрекингам
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Наталья Руколь (Лаборатория Качества)
Наталья Руколь (Лаборатория Качества)Наталья Руколь (Лаборатория Качества)
Наталья Руколь (Лаборатория Качества)
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 

More from Forge Events

Аналітика: до, під час та після рекламної кампанії
Аналітика: до, під час та після рекламної кампаніїАналітика: до, під час та після рекламної кампанії
Аналітика: до, під час та після рекламної кампаніїForge Events
 
Продажі VS стосунки або як не звільнити маркетолога
Продажі VS стосунки або як не звільнити маркетологаПродажі VS стосунки або як не звільнити маркетолога
Продажі VS стосунки або як не звільнити маркетологаForge Events
 
#M/PR: Василь Кремінець "Як зробити 500 заявок на курси іноземної мови через ...
#M/PR: Василь Кремінець "Як зробити 500 заявок на курси іноземної мови через ...#M/PR: Василь Кремінець "Як зробити 500 заявок на курси іноземної мови через ...
#M/PR: Василь Кремінець "Як зробити 500 заявок на курси іноземної мови через ...Forge Events
 
#M/PR: Анастасія Лавроненко "Ніч перед Kickstarter. Як слланувати Kickstarter...
#M/PR: Анастасія Лавроненко "Ніч перед Kickstarter. Як слланувати Kickstarter...#M/PR: Анастасія Лавроненко "Ніч перед Kickstarter. Як слланувати Kickstarter...
#M/PR: Анастасія Лавроненко "Ніч перед Kickstarter. Як слланувати Kickstarter...Forge Events
 
"Один раз побачити, ніж сто раз почути. Що таке візуальна мова і на яких інст...
"Один раз побачити, ніж сто раз почути. Що таке візуальна мова і на яких інст..."Один раз побачити, ніж сто раз почути. Що таке візуальна мова і на яких інст...
"Один раз побачити, ніж сто раз почути. Що таке візуальна мова і на яких інст...Forge Events
 
"Що таке Аккаунтінг? Як працювати з найпотужнішими компаніями на прикладі IBM"
"Що таке Аккаунтінг? Як працювати з найпотужнішими компаніями на прикладі IBM""Що таке Аккаунтінг? Як працювати з найпотужнішими компаніями на прикладі IBM"
"Що таке Аккаунтінг? Як працювати з найпотужнішими компаніями на прикладі IBM"Forge Events
 
#UIDay: Марина Хижняк "Взаємодія проектування"
#UIDay:  Марина Хижняк "Взаємодія проектування"#UIDay:  Марина Хижняк "Взаємодія проектування"
#UIDay: Марина Хижняк "Взаємодія проектування"Forge Events
 
#M/PR: Марія Письменна "Навіщо компаніям конференції? "
#M/PR: Марія Письменна "Навіщо компаніям конференції? "#M/PR: Марія Письменна "Навіщо компаніям конференції? "
#M/PR: Марія Письменна "Навіщо компаніям конференції? "Forge Events
 
#M/PR: Кір Горшков: "Системний інтернет-маркетинг для власника бізнесу"
#M/PR: Кір Горшков: "Системний інтернет-маркетинг для власника бізнесу"#M/PR: Кір Горшков: "Системний інтернет-маркетинг для власника бізнесу"
#M/PR: Кір Горшков: "Системний інтернет-маркетинг для власника бізнесу"Forge Events
 
#M/PR: Назарій Мазур: "Комплексний інтернет-маркетинг для продуктової ІТ-комп...
#M/PR: Назарій Мазур: "Комплексний інтернет-маркетинг для продуктової ІТ-комп...#M/PR: Назарій Мазур: "Комплексний інтернет-маркетинг для продуктової ІТ-комп...
#M/PR: Назарій Мазур: "Комплексний інтернет-маркетинг для продуктової ІТ-комп...Forge Events
 
#M/PR: Олесь Кучеренко: "Маркетинг не по інструкції"
#M/PR: Олесь Кучеренко: "Маркетинг не по інструкції"#M/PR: Олесь Кучеренко: "Маркетинг не по інструкції"
#M/PR: Олесь Кучеренко: "Маркетинг не по інструкції"Forge Events
 
#M/PR: Юлія Мусаковська: "The Power of Integrated Marketing Communications"
#M/PR: Юлія Мусаковська: "The Power of Integrated Marketing Communications"#M/PR: Юлія Мусаковська: "The Power of Integrated Marketing Communications"
#M/PR: Юлія Мусаковська: "The Power of Integrated Marketing Communications"Forge Events
 
#M/PR: Марія Письменна: "Навіщо компаніям конференції?"
#M/PR: Марія Письменна: "Навіщо компаніям конференції?"#M/PR: Марія Письменна: "Навіщо компаніям конференції?"
#M/PR: Марія Письменна: "Навіщо компаніям конференції?"Forge Events
 
#M/PR Юрій Пирч "Маркетинг у внутрішньому туризму"
 #M/PR Юрій Пирч "Маркетинг у внутрішньому туризму" #M/PR Юрій Пирч "Маркетинг у внутрішньому туризму"
#M/PR Юрій Пирч "Маркетинг у внутрішньому туризму"Forge Events
 
#M/PR: Сем Мамедов: "Що таке робота на Олімпійських Іграх"
#M/PR: Сем Мамедов: "Що таке робота на Олімпійських Іграх"#M/PR: Сем Мамедов: "Що таке робота на Олімпійських Іграх"
#M/PR: Сем Мамедов: "Що таке робота на Олімпійських Іграх"Forge Events
 
Autoframework design
Autoframework designAutoframework design
Autoframework designForge Events
 
Процес генерування Ідей
Процес генерування ІдейПроцес генерування Ідей
Процес генерування ІдейForge Events
 
Що таке робота на Олімпійських іграх і як не осоромитись перед IBM?
Що таке робота на Олімпійських іграх і як не осоромитись перед IBM?Що таке робота на Олімпійських іграх і як не осоромитись перед IBM?
Що таке робота на Олімпійських іграх і як не осоромитись перед IBM?Forge Events
 
Фундамент политического PR
Фундамент политического PRФундамент политического PR
Фундамент политического PRForge Events
 
Як зробити це безкоштовно
Як зробити це безкоштовноЯк зробити це безкоштовно
Як зробити це безкоштовноForge Events
 

More from Forge Events (20)

Аналітика: до, під час та після рекламної кампанії
Аналітика: до, під час та після рекламної кампаніїАналітика: до, під час та після рекламної кампанії
Аналітика: до, під час та після рекламної кампанії
 
Продажі VS стосунки або як не звільнити маркетолога
Продажі VS стосунки або як не звільнити маркетологаПродажі VS стосунки або як не звільнити маркетолога
Продажі VS стосунки або як не звільнити маркетолога
 
#M/PR: Василь Кремінець "Як зробити 500 заявок на курси іноземної мови через ...
#M/PR: Василь Кремінець "Як зробити 500 заявок на курси іноземної мови через ...#M/PR: Василь Кремінець "Як зробити 500 заявок на курси іноземної мови через ...
#M/PR: Василь Кремінець "Як зробити 500 заявок на курси іноземної мови через ...
 
#M/PR: Анастасія Лавроненко "Ніч перед Kickstarter. Як слланувати Kickstarter...
#M/PR: Анастасія Лавроненко "Ніч перед Kickstarter. Як слланувати Kickstarter...#M/PR: Анастасія Лавроненко "Ніч перед Kickstarter. Як слланувати Kickstarter...
#M/PR: Анастасія Лавроненко "Ніч перед Kickstarter. Як слланувати Kickstarter...
 
"Один раз побачити, ніж сто раз почути. Що таке візуальна мова і на яких інст...
"Один раз побачити, ніж сто раз почути. Що таке візуальна мова і на яких інст..."Один раз побачити, ніж сто раз почути. Що таке візуальна мова і на яких інст...
"Один раз побачити, ніж сто раз почути. Що таке візуальна мова і на яких інст...
 
"Що таке Аккаунтінг? Як працювати з найпотужнішими компаніями на прикладі IBM"
"Що таке Аккаунтінг? Як працювати з найпотужнішими компаніями на прикладі IBM""Що таке Аккаунтінг? Як працювати з найпотужнішими компаніями на прикладі IBM"
"Що таке Аккаунтінг? Як працювати з найпотужнішими компаніями на прикладі IBM"
 
#UIDay: Марина Хижняк "Взаємодія проектування"
#UIDay:  Марина Хижняк "Взаємодія проектування"#UIDay:  Марина Хижняк "Взаємодія проектування"
#UIDay: Марина Хижняк "Взаємодія проектування"
 
#M/PR: Марія Письменна "Навіщо компаніям конференції? "
#M/PR: Марія Письменна "Навіщо компаніям конференції? "#M/PR: Марія Письменна "Навіщо компаніям конференції? "
#M/PR: Марія Письменна "Навіщо компаніям конференції? "
 
#M/PR: Кір Горшков: "Системний інтернет-маркетинг для власника бізнесу"
#M/PR: Кір Горшков: "Системний інтернет-маркетинг для власника бізнесу"#M/PR: Кір Горшков: "Системний інтернет-маркетинг для власника бізнесу"
#M/PR: Кір Горшков: "Системний інтернет-маркетинг для власника бізнесу"
 
#M/PR: Назарій Мазур: "Комплексний інтернет-маркетинг для продуктової ІТ-комп...
#M/PR: Назарій Мазур: "Комплексний інтернет-маркетинг для продуктової ІТ-комп...#M/PR: Назарій Мазур: "Комплексний інтернет-маркетинг для продуктової ІТ-комп...
#M/PR: Назарій Мазур: "Комплексний інтернет-маркетинг для продуктової ІТ-комп...
 
#M/PR: Олесь Кучеренко: "Маркетинг не по інструкції"
#M/PR: Олесь Кучеренко: "Маркетинг не по інструкції"#M/PR: Олесь Кучеренко: "Маркетинг не по інструкції"
#M/PR: Олесь Кучеренко: "Маркетинг не по інструкції"
 
#M/PR: Юлія Мусаковська: "The Power of Integrated Marketing Communications"
#M/PR: Юлія Мусаковська: "The Power of Integrated Marketing Communications"#M/PR: Юлія Мусаковська: "The Power of Integrated Marketing Communications"
#M/PR: Юлія Мусаковська: "The Power of Integrated Marketing Communications"
 
#M/PR: Марія Письменна: "Навіщо компаніям конференції?"
#M/PR: Марія Письменна: "Навіщо компаніям конференції?"#M/PR: Марія Письменна: "Навіщо компаніям конференції?"
#M/PR: Марія Письменна: "Навіщо компаніям конференції?"
 
#M/PR Юрій Пирч "Маркетинг у внутрішньому туризму"
 #M/PR Юрій Пирч "Маркетинг у внутрішньому туризму" #M/PR Юрій Пирч "Маркетинг у внутрішньому туризму"
#M/PR Юрій Пирч "Маркетинг у внутрішньому туризму"
 
#M/PR: Сем Мамедов: "Що таке робота на Олімпійських Іграх"
#M/PR: Сем Мамедов: "Що таке робота на Олімпійських Іграх"#M/PR: Сем Мамедов: "Що таке робота на Олімпійських Іграх"
#M/PR: Сем Мамедов: "Що таке робота на Олімпійських Іграх"
 
Autoframework design
Autoframework designAutoframework design
Autoframework design
 
Процес генерування Ідей
Процес генерування ІдейПроцес генерування Ідей
Процес генерування Ідей
 
Що таке робота на Олімпійських іграх і як не осоромитись перед IBM?
Що таке робота на Олімпійських іграх і як не осоромитись перед IBM?Що таке робота на Олімпійських іграх і як не осоромитись перед IBM?
Що таке робота на Олімпійських іграх і як не осоромитись перед IBM?
 
Фундамент политического PR
Фундамент политического PRФундамент политического PR
Фундамент политического PR
 
Як зробити це безкоштовно
Як зробити це безкоштовноЯк зробити це безкоштовно
Як зробити це безкоштовно
 

Готовим Entity Framework. Рецепты для холостяков

  • 1. Готовим Entity Framework. Рецепты холостяка, а так же дегустация готовых блюд Игорь Лужанский и Олег Боднар | Львов | 21 декабря
  • 2. Содержание • История ингредиента • Выбираем правильную кулинарную школу • От чего зависит вкус готового блюда ? • Рецепты высокой производительности
  • 4. Содержание • История ингредиента • Выбираем правильную кулинарную школу • От чего зависит вкус готового блюда ? • Рецепты высокой производительности
  • 5. Code first или Database first ? Вот в чем вопрос….
  • 6. Для тех кто не знает….
  • 7. Code first. За что мы его любим • Автоматическое обновление базы • Автоматическое создание индексов • Высокая скорость разработки • Наличие миграций
  • 8. Code first. С чем надо быть осторожным • Легко сделать базу не валидной
  • 9. Database first. Для смельчаков • Всегда валидная модель • Полный доступ ко всем возможностям базы
  • 10. Database first. Что нас напрягает • Необходимость поддерживать базу
  • 11. Совет от шеф повара Используйте code first только после того как познали database first
  • 12. Содержание • История ингредиента • Выбираем правильную кулинарную школу • От чего зависит вкус готового блюда ? • Рецепты высокой производительности
  • 13. Entity Framework не всегда виноват • Query • ORM • Database • Data Transfer
  • 14. Содержание • История ингредиента • Выбираем правильную кулинарную школу • От чего зависит вкус готового блюда ? • Рецепты высокой производительности
  • 15. Рецепт 1. Для выборки данных • AsNoTracking – метод который позволяет не мониторить изменения в дата сетте
  • 16. Рецепт 2. Для минимизации запросов • Использовать ToList, First, Signle, foreach and etc. после того как сформирован запрос • Отключить Lazy Loading • Использовать хранимые процедуры для возвращения нескольких результатов
  • 17. Рецепт 3. Вставка более 100 записей • Использовать SqlBulkCopy • Готовые реализации: EntityFramework.Utilities
  • 18. Рецепт 4. Необходимо выполнить 2 отдельных запроса • Не использовать Include, если: • Получаем много записей