Dear foreigner, this is a late post for you (not in Brazil though). Don't mind translating it.
Um alô pra galera de TI! Seguindo com a arquitetura adotada num projeto, vou explicar alguns pontos importantes e dar exemplos com o NHibernate e Fluent + PRISM. O objetivo deste post não será comparar camadas de persistência detalhadamente (EF x Nhibernate), pois já existem muitos materiais na internet abordando o assunto.
O Nhibernate, como um produto, vem exercendo um papel muito importante na construção de aplicações e gente altamente especializada dedicou o seu tempo para mantê-lo, corrigir seus bugs e adicionar novas funcionalidades. Sua origem começou no java com o hibernate e o fato dele ter sido portado só reforça o seu êxito.
"Ah, mas o futuro do nhibernate é incerto..."
Sim, isso é verdade! À medida que o produto foi amadurecendo, o investimento de tempo sobre ele foi ficando mais baixo e a chegada do Entity Framework nos deu outra opção como camada de persistência. Por outro lado, consideremos o fato do nhibernate ser uma solução opensource e também as várias crises financeiras afetando não só projetos de ti.
Não há nenhuma previsão de grande inovação ou ground-breaking para servidores de banco de dados (há opções para Cloud Database, apesar desta realidade ser distante para os brazucas). Ou seja, para as aplicações mais próximas ao nosso mercado, o time Nhibernate + PRISM cumpre muito bem o trabalho.
As novidades feitas para assincronia do .NET Framework 4.5 talvez tardam a serem refletidas no Nhibernate, mas tenho certeza que a comunidade juntará esforços para que isso seja feito.
Você verá mais tarde que o componente principal é o PRISM, orientando a construção da aplicação de forma modular (até mesmo no nível da persistência).