Слышал что Даппер быстрее 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 лучший вариант.
Спасибо большое! Всё понял