Você pode facilmente usar o NHibernate para tornar seu aplicativo independente de banco de dados seguindo algumas práticas básicas:
- Projete seu modelo de objeto primeiro.
- Não use nenhum código específico do banco de dados. Você precisa de alguém com boa experiência em C#, não um desenvolvedor Oracle. Não confie em coisas como gatilhos, procedimentos armazenados etc.
- Deixe o NHibernate gerar os esquemas de banco de dados pelo menos inicialmente (você pode ajustar coisas como índices posteriormente). Ele escolherá os melhores tipos de dados disponíveis para cada banco de dados.
- Use um gerador de POID independente de banco de dados (
hilo
ouguid
) em vez de sequências ou identidade. - Tente evitar o uso de SQL. HQL e Linq funcionam bem em 99% dos casos.
- Evite recursos do NH que não são compatíveis com todo o seu banco de dados de destino (por exemplo, Future, MultiCriteria etc.)
NHibernate tem uma grande comunidade. Você sempre pode fazer suas perguntas em http://groups.google.com/group/nhusers além de postar aqui.