Diferença entre Nhibernate e Linq

Nhibernate vs Linq

LINQ

LINQ significa Consulta Integrada ao Idioma. Basicamente, o LINQ aborda o atual modelo de desenvolvimento de banco de dados no contexto do Modelo de Programação Orientada a Objetos. No entanto, o suporte abrangente ao LINQ precisa de algumas extensões no idioma empregado, pois o Linq não é uma ferramenta completa de ORM (Object Relational Mapping). Essas extensões aumentam a saída e a eficiência, fornecendo uma sintaxe mais curta, significativa e expressiva para manipular dados.

O LINQ é um modelo de programação que introduz consultas como um conceito de primeira classe em qualquer linguagem do Microsoft NET. Em outras palavras, é considerada uma linguagem de consulta utilizada principalmente com o MS SQL Server. Muitos consideram o Linq bastante útil em aplicativos menores, onde a necessidade de banco de dados não é substancial.

NHIBERNATE

O NHibernate é uma solução de mapeamento relacional a objetos ou ORM de código aberto para a plataforma Microsoft .NET. Ele é desenvolvido de maneira semelhante à biblioteca Hibernate do Java, que fornece serviços para levar objetos de estrutura .NET para e de um banco de dados subjacente.

Destina-se principalmente a desenvolvedores focados no domínio, e não no banco de dados. O NHibernate pode ser aplicado com praticamente qualquer sistema de gerenciamento de banco de dados (DBMS).

Em desvantagem, sem inteligência, o NHibernate possui uma linguagem de consulta limitada. No entanto, é bastante flexível com relação aos tipos de definições de objetos que podem ser mapeados para estruturas de tabela. O NHibernate apresenta mais opções, pois é possível ajustar muitos aspectos em termos de acesso a dados. É quase ilimitado.

Resumo:

1. Com o Linq, o banco de dados já existe e os relacionamentos e alguma programação dependem de como o banco de dados é definido.
2. Ao contrário do Linq, o NHibernate é um código aberto.
3. Nhibernate é uma ferramenta ORM, enquanto o Linq é uma ferramenta ORM incompleta, pois precisa de extensões adicionais.
4. O Linq é principalmente um idioma de consulta, enquanto o NHibernate possui um idioma de consulta limitado.
5. O Linq é muito mais útil em pequenas aplicações em que não há dependência massiva de bancos de dados.
6. O NHibernate é muito flexível e apresenta mais opções.