Pergunta

Esta resposta diz que Linq é dirigido a um grupo um pouco diferente de desenvolvedores que NHibernate, Castelo, etc.

Sendo bastante novo para C #, esquece todas as coisas DB torno dela:

  • Existem outros grandes, por falta de um termo melhor, wrappers SQL que NHibernate, Castelo, Linq?
  • Quais são as diferenças entre eles?
  • Que tipo de desenvolvedores ou desenvolvimento são eles que visa?

-Adam

Foi útil?

Solução

Quando você diz Castelo Eu suponho que você quer dizer Castelo Active Record?

A diferença é NHibernate é um OR / M e é voltado para desenvolvedores que querem focar o domínio em vez do banco de dados. Com LINQ to SQL, seu banco de dados é pré-existente e você está relacionamentos e alguns de programação será conduzido pela forma como seu banco de dados está definida.

Agora entre NHibernate e Castle ActiveRecord - eles são semelhantes em que você está dirigindo o design do aplicativo a partir do domínio, mas com NHibernate você fornecer arquivos xml de mapeamento (ou classes de mapeamento com NHibernate fluente), onde no Active Record você estiver usando o convenção sobre configuração (usando atributos para definir as colunas e configurações que não se ajustam naturalmente). Castelo registro ativo ainda está usando NHibernate em segundo plano.

Um OR / M não é necessariamente o 'único caminho verdadeiro' para ir. Depende do seu ambiente, a aplicação seu desenvolvimento e sua equipe.

Você também pode querer verificar para fora SubSonic . É ótimo para registro ativo, mas não é para o projeto onde você quer concentrar-se principalmente em seu domínio. Dependendo do projeto, eu costumo usar NHibernate (com Castelo Active Record) ou Subsonic

Outras dicas

LINQ é apenas um conjunto de novos recursos C #: métodos de extensão, expressões lambda, inicializadores de objeto, tipos anônimos, etc

.

"LINQ to SQL", por outro lado é algo que você pode comparar outras embalagens SQL.

Na verdade, usamos tanto Linq e NHibernate juntos (com Fluente). Se você tiver um pouco de paciência com a curva de aprendizagem, então você vai cair rapidamente no amor.

NHibernate e LINQ to SQL são objeto / relacional Mappers projetado para facilitar a lidar com a incompatibilidade de impedância encontrada entre os objetos e RDBMS. Se você onde quer alcançar, uma aplicação ignorante persistente testável, NHibernate é o caminho a percorrer. Eu sempre recomendo NHibernate sobre LINQ to SQL. Ambas as ferramentas são destinadas a remoção de negociação com acesso a dados. Quantas vezes você realmente precisa de código de acesso de dados de escrita?

Castle é uma estrutura de aplicativo e inversão de controle recipiente e não fornece acesso a dados. Ela fornece instalações para usar NHibernate, para fazer menos atrito, e também fornece uma implemenation do padrão Actuve Gravar usando NHibernate.

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