Для базовых приложений CRUD Entity Framework или любой приличный ORM сэкономит вам массу времени. Да, есть кривая обучения. Как и в случае с большинством технологий, вы можете использовать то, что знаете, или инвестировать, чтобы узнать что-то, что может быть лучше. ОРМ определенно лучше.
Ваш sproc возвращает считыватель данных или набор данных? Сколько кода вы пишете (с T4 или нет), чтобы перевести этот читатель / набор данных в объектный класс? В конце концов, если вы не используете готовый ORM, вам обычно приходится создавать свой собственный, что является огромной ошибкой.
Как вы решили разделить бизнес-логику (для сценариев без CRUD) между sprocs и классами приложений? С ORM бизнес-логика почти никогда не разделяется, все это относится к классам приложений, которые значительно проще поддерживать.
Я сделал это обоими способами, и T4 оставляет много желательным в качестве решения для уровня данных.
Даже с ORM существуют сценарии (для производительности или чего-либо еще), где вы будете использовать sprocs, и это нормально, но вам никогда не понадобится больше, чем несколько sprocs для базы данных с сотнями таблиц.
ORM предлагают множество функций, которые вам могут не понадобиться сегодня, но вы будете рады, что вам не нужно создавать их самостоятельно, когда они вам действительно нужны.