Depende (:)) um pouco do mapeador OR que você está usando, portanto, dedique algum tempo pesquisando quais bancos de dados o mapeador OR oferece suporte / não suporte.
Por exemplo, os mapeadores OR da Microsoft não suportam todos os tipos de dados internos do SQL Server, não suportam alguns dos recursos TSQL mais novos / avançados (consultas recursivas, dicas do otimizador etc.).
Em teoria , um bom mapeador de OR deve ser flexível o suficiente para superar (e permitir mapear) um esquema de banco de dados relacional bem projetado para um bom modelo de objeto. Na realidade, ainda temos um pouco a percorrer antes que todas as peças do quebra-cabeça estejam no lugar; embora muitos mapeadores de OR ofereçam suporte ao mapeamento avançado, isso geralmente ocorre às custas de consultas complexas e problemas de desempenho.
Para um bom desempenho do banco de dados (e para preservar a sanidade do dba :)), você ainda deve seguir as práticas recomendadas quando se trata de design de esquema do db; normalize primeiro e desnormalize onde [/ se] for necessário. No lado do código, não exagere no modelo de objeto ; mesmo se o mapeador OR oferecer suporte a modelos de herança complexos e entidades que mesclam muitas tabelas, essas também são as áreas em que você corre o risco de ter problemas com consultas excessivamente complexas que atingem o banco de dados, etc. Perfil, perfil, perfil e não apenas use o ORM consultas geradas como garantidas. Lembre-se de que as consultas geradas pelo mapeador OR geralmente podem ser ajustadas como as consultas SQL normais e que duas consultas funcionalmente equivalentes no lado do objeto (por exemplo, consultas linq) às vezes podem resultar em consultas SQL muito diferentes.