Я думаю, что наибольшее влияние здесь оказывает производительность; очень просто использовать EF (или любой другой ORM) для создания простых интерфейсов CRUD. Но проблемы возникают, когда вы не до конца понимаете, что происходит.
Например, предположим, что большой объект с несколькими вложенными коллекциями; У ORM есть предел, который понимает, как эти данные интегрированы, и должен возвращать данные, денормализованные для материализации этого объекта. И это может оказать огромное влияние на передачу данных.
Другое дело о производительности. Возможно, вы получаете пользовательский интерфейс, который должен выполнять много вычислений, или обновлять большой объект и его зависимости. В этом случае я предлагаю использовать собственный доступ (хранимые процедуры и т. Д.), Чтобы полностью раскрыть потенциал вашей СУБД.
Резюме: простые интерфейсы, ORM; средние и сложные интерфейсы, хранимые процедуры.