Ao escolher um ORM, o LINQ to SQL ou o LINQ to Entities é melhor que o NHibernate?

StackOverflow https://stackoverflow.com/questions/71955

  •  09-06-2019
  •  | 
  •  

Pergunta

Acho que posso fazer mais com o NHibernate e até com o Castle do que com o Linq to Entities ou o linq to SQL.

Estou louco?

Foi útil?

Solução

Não, você não está louco.nHibernate é um mapeador OR completo, Linq to SQL e Linq to Entities não implementam tudo o que você esperaria de um mapeador OR e é direcionado a um grupo ligeiramente diferente de desenvolvedores.

Mas não deixe que isso o afaste do linq.Linq ainda é uma boa ideia.Experimente o Linq para nHibernate :-)

Outras dicas

A grande desvantagem do NHibernate, Castle, etc., é que eles não são exatamente leves (especialmente o NHibernate).

Linq to SQL é bom para um ORM leve e de uso limitado.

Eu usei NHibernate e LINQ to SQL.Do meu ponto de vista depende do projeto, se eu precisar de algo rápido, escolheria L2S, é tão simples criar o mapeamento dbml e começar a usá-lo.Se eu estiver desenvolvendo uma solução corporativa de mais alto nível, eu optaria pelo testado e confiável ORM - NHibernate, acho os recursos de registro e transação simples de usar.

LINQ to SQL tem uma curva de aprendizado relativamente curta, NHibernate tem uma curva de aprendizado muito mais acentuada.

LINQ to SQL suporta apenas SQL Server, portanto, se você possui um banco de dados Oracle, a decisão já está tomada - NHibernate.

Eu recomendo conferir http://www.summerofnhibernate.com/ para excelentes screencasts sobre como aprender o NHibernate.

Uma coisa a ter em mente é que o NHibernate pode ser um porco absoluto para configurar - especialmente porque é baseado principalmente em arquivos de configuração XML por causa de suas raízes como o Hibernate original.

Fluente NHibernate ajuda a tornar isso menos doloroso.

O Linq certamente se encaixa na 'maneira' geral como o .NET funciona.

Blockquote Linq certamente se encaixa na 'maneira' geral como o .NET funciona

Caramba, esse tipo de sentimento me assusta.O material RAD incorporado ao .net NÃO é como o dot net funciona, é apenas um conjunto de ferramentas para criar protótipos.O .NET nos permite fazer aplicações DDD completas, com altos níveis de coesão, separações de interesses, e nos permite escrever código desacoplado, apesar de todas as tentativas que a MS faz para acoplar as coisas.Eu discordo veementemente que .net gosta de ser acoplado, certas ferramentas gostam de ser acopladas, incluirei linq to sql nesta briga.linq to sql destrói a idéia de ter um modelo de domínio separado.Eu me estremeço só de pensar em usar meu esquema de banco de dados como objeto de modelo subjacente.Ferramentas ORM adequadas devem nos permitir modelar primeiro nosso domínio e depois vincular nosso banco de dados relacional a esses modelos.Não o contrário.

Eu não experimentei o Entity Framework, mas definitivamente recomendaria o NHibernate em vez do Linq to SQL;A maior razão que posso dar é apenas o controle.Linq to SQL gosta de ter muito mais controle sobre tudo, carregando o objeto e mantendo todo tipo de informações de rastreamento sobre o objeto.Se você serializar/desserializar, as informações de rastreamento poderão ser perdidas e coisas estranhas poderão acontecer ao salvá-las novamente.O NHibernate funciona mais como um repositório deveria - você entrega o objeto que quiser (que você configurou para entender, é claro), e ele o guarda no banco de dados, independentemente do que você fez com ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top