Isso é difícil de explicar para muitos programadores, porque se você só conhece SQL básico então realmente não lhe dá muita vantagem sobre a muleta de um ORM. Os conceitos SQL mais avançados, no entanto, são uma parte crucial da diferença entre os aplicativos que apenas trabalham contra aplicativos de alta qualidade (em particular, rápidos e confiáveis).
Estou assumindo que alguém projeta os bancos de dados para você, porque fazer isso sem conhecer qualquer SQL está além do limite. Mas mesmo que você esteja apenas se desenvolvendo contra eles, aqui está apenas uma lista parcial de todas as coisas que os ORMs ainda tendem a fazer mal ou de maneira alguma:
- Consultas recursivas e / ou de hierarquia
- Parâmetros opcionais (especialmente traduzindo-os em predicados de intervalo)
- Tipos de dados definidos pelo usuário
- Tipos específicos de plataforma (SQL hierarchyid e TVPs, matrizes Oracle e tabelas aninhadas, etc.)
- Inserções em lotes / atualizações / upserts / exclusões
- Dicas de índice
- Bloquear dicas (especialmente bloqueios de atualização e leituras sujas)
- Tratamento de erros
- Associações externas - seus conjuntos de resultados são mal mapeados para o modelo OOP, muitos ORMs têm sua própria linguagem de consulta, mas é semelhante a conhecer o próprio SQL;
- Modularização por meio de procedimento armazenado e UDFs, especialmente UDFs sequenciais e consultas CROSS APPLY
- Uso de OUTPUT / RETURNING para testar dados em várias tabelas
- Consultas de paginação eficientes
- Consultas baseadas em funções de janelas (rownum, rank, partitions)
A lista continua - muitas dessas coisas que um DBA iniciante nunca teve que fazer, e um desenvolvedor novato nunca ouviu falar - mas elas são muito importantes em aplicativos de larga escala.
ORMs são ótimos para acelerar o verdadeiro código SQL chato - isto é, todo o CRUD e mapeamento repetitivos e outros códigos de encanamento, então não há absolutamente nenhuma vergonha em usá-los e não ouça qualquer um que diga que eles são maus. Mas você definitivamente ainda precisa aprender e sim, mesmo mestre SQL, e estar preparado para cair em comandos / consultas de banco de dados brutos quando o ORM não está puxando seu peso.