EF vs. NHibernate [fechado]

8

Nos últimos dois anos, desde que comecei a escrever aplicativos de negócios (antes de fazer programação de sistemas de front end de alto nível ou de muito baixo nível), aprendi conjuntos de dados, linq para sql e agora estrutura de entidade. A coisa lógica a seguir parece ser o NHibernate.

As razões pelas quais acabei na EF são: (1) ele tem o melhor suporte de designer e (2) o mais suportado pela Microsoft.

As razões (estas têm elementos de suposição) que eu estou interessado no NHibernate são: (1) ele pode não ser substituído por algo totalmente diferente tão rapidamente quanto o MS produz tecnologias de acesso a dados (2) Parece que é o front running ou o segundo a ferramenta de execução frontal para o que faz e (3) Parece bastante estável e rastreável ao longo do tempo.

Alguém publicou uma comparação dos dois? Um é melhor que o outro para certos tipos de arquiteturas? Ou é apenas uma questão de estilo e preferência?

Anodeto de Aaron
fonte

Respostas:

6

Neste ponto, acho que as principais (apenas?) Vantagens que o NH tem sobre a EF são algumas estratégias de busca muito refinadas . Em vez de carregar preguiçosamente ou carregar tudo ansiosamente, o NH oferece algumas opções intermediárias muito boas.

Dito isto, nunca precisei desse nível de controle sobre meu acesso a dados e, portanto, a simplicidade da EF tornou a escolha fácil.

Lembre-se de que o arquivo de designer EF que, de outra forma, é tão agradável de se trabalhar, pode se tornar um pesadelo no controle de origem; não se funde bem, ou nem um pouco. Verifique com um bloqueio explícito sempre que precisar alterar as coisas.

Adam Rackis
fonte
3
+1 para o designer. Não tive uma boa experiência com nada relacionado a um designer.
Codism 19/08/11
não esqueça a capacidade de sempre trabalhar com um banco de dados diferente do SQLServer. A EF gera sql não padrão em alguns casos.
precisa saber é o seguinte
você poderia solucionar o problema de mesclagem colocando o arquivo de designer na sua lista de ignorados e gerando novamente, porque as alterações são refletidas no arquivo edmx?
Aaron Anodide
1
@ Gabriel, acho que o arquivo edmx é o que causa os problemas. As pessoas atualizam o designer, que altera o edmx, depois fazem o check-in e, se outras pessoas fizeram o mesmo, o inferno se abre.
Adam Rackis
5
Se você baixar o download do (oficial, suportado pela Microsoft, mas não incluído no .NET 4.0) EF 4.1 , poderá usar o Code First e montar seus mapeamentos de maneira muito semelhante ao FluentNHibernate. Funciona muito bem com o controle de origem.
precisa saber é o seguinte
3

Estamos fazendo um projeto em que o arquiteto escolheu o NHibernate em vez da EF. Eu gostaria que a escolha tivesse acontecido de outra maneira, já que um requisito de editor-assinante estava presente desde o início.

Se você planeja usar a estrutura de sincronização , vá com o EF, pois o NHibernate não pode lidar com as atualizações (nas colunas que especificam de onde os dados vieram, quem os alterou e a minha cópia é a mais recente) que acontecem nos bastidores.

Se você precisar replicar dados de um banco de dados para outro (e manter as chaves primárias iguais), a session.Replicatefunção está mal documentada e parece demorar mais do que uma cópia direta.

Tangurena
fonte