Dapper или Entity Framework

Слышал что Даппер быстрее entity framework. Так почему же до сих пор используется именно последний? Почему Даппер не настолько популярен как EF?

EntityFramework:

1. Позволяет создавать модель через код (Code First) и БД (Model First)

2. LINQ

3. EF6 позволяет писать минимум кода, остальное генерируется автоматически само

4. Меппинг с базой данных

5. Уменьшает стоимость и время разработки

6. Нет контроля запросами

7. Работает медленно

Dapper:

1. Работает быстрее

2. Параметризирование запросов

3. Легко передавать результаты в объекты

4. По-умолчанию не поддерживает CRUD

Если вы не используете подход Code First и ваш проект использует большую базу данных с множеством таблиц и разно извращенных запросов, то предпочтителен Dapper.

При не большом проекте, можно использовать и EntityFramework.

Но всегда есть нюансы:

EntityFramework удобно использовать, если вы перенесли логику в БД (хранимки, вьюхи). В таком случае не приходится городить большие запросы на LINQ. И не забываем, что модели, которые генерит EntityFramework не являются DTO моделями и использование их при выдачи данных на клиента ни есть гуд (встречал и не на одном проекте). Двунаправленные ссылки тоже проблема Entity. Самый большой минуc - это скорость выполнения запросов. Практика показывает, что при использовании EntityFramework в базе с более 150-ю таблицами начинаются проблемы с EDMX.

У Dapper-а из коробки нет CRUD. В своей практике я чаще использую Dapper, при этом пользуюсь своим репозиторием с обобщенными методами, что упрощает работу с Dapper-ом. И главный его плюс конечно же скорость.

Если не заглядывать в будущее, то для быстрой разработки лучше EntityFramework, но на перспективу Dapper лучший вариант.

Спасибо большое! Всё понял