2008-09-17 13 views
9

This answer says que LINQ está dirigido a un grupo un poco diferente de los desarrolladores que NHibernate, Castillo, etc.Diferencias entre NHibernate, Castle, Linq - ¿A quién van dirigidas?

ser bastante nuevo en C#, no importa todo el material DB que lo rodean:

  • ¿Hay otra importante, por falta de un término mejor, envoltorios SQL que NHibernate, Castle, Linq?
  • ¿Cuáles son las diferencias entre ellos?
  • ¿A qué tipo de desarrolladores o desarrollo se dirigen?

-Adam

Respuesta

17

Cuando dice Castillo supongo que te refieres Castillo Active Record?

La diferencia es que NHibernate es un OR/M y está dirigido a desarrolladores que desean centrarse en el dominio en lugar de la base de datos. Con linq a sql, su base de datos es preexistente y sus relaciones, y parte de la programación dependerá de cómo se defina su base de datos.

Ahora entre NHibernate y Castle ActiveRecord: son similares en cuanto a que dirige el diseño de la aplicación desde el dominio, pero con NHibernate proporciona archivos xml de asignación (o asigna clases con NHibernate con fluidez) en Active Record está utilizando la convención sobre la configuración (usando atributos para definir cualquier columna y configuración que no encaja naturalmente). Castle Active record sigue usando NHibernate en segundo plano.

Una OR/M no es necesariamente la "única forma verdadera" de ir. Depende de tu entorno, de la aplicación que desarrolles y de tu equipo.

Quizás también desee comprobar SubSonic. Es ideal para el registro activo, pero no es para proyectos en los que desea centrarse principalmente en su dominio. Dependiendo del proyecto, que suelen utilizar cualquiera de NHibernate (con el castillo de Active Record) o subsónico

1

LINQ es sólo un conjunto de nuevos C# características: métodos de extensión, las expresiones lambda, inicializadores de objeto, tipos anónimos, etc.

"LINQ to SQL" por otro lado es algo que puede comparar otros contenedores SQL.

1

NHibernate y Linq To Sql son asignadores de objetos/relacionales diseñados para facilitar el tratamiento de la falta de correspondencia de impedancia encontrada entre objetos y RDBMS. Si desea obtener una aplicación ignorante comprobable y persistente, NHibernate es el camino a seguir. Siempre recomendaría NHibernate sobre Linq To Sql. Ambas herramientas están destinadas a eliminar el tratamiento del acceso a los datos. ¿Cuántas veces necesitas escribir el código de acceso a datos?

Castle es un marco de aplicación y un contenedor de Inversión de control y no proporciona acceso a datos. Proporciona instalaciones para utilizar NHibernate, lo que permite una menor fricción, y también proporciona una implementación del patrón Actuve Record utilizando NHibernate.

1

Actualmente usamos tanto Linq como NHibernate juntos (con Fluent). Si tiene un poco de paciencia con la curva de aprendizaje, entonces se enamorará rápidamente.