Pregunta

NHibernate no es realmente una buena opción para nuestro entorno debido a todas las dependencias.(Castillo, log4net, etc.)

¿Existe una buena alternativa ligera?

La compatibilidad con bases de datos basadas en archivos simples como Access/SQLite/VistaDB es esencial.

Idealmente, algo contenido en un único ensamblado que solo haga referencia a ensamblados .NET.Si solo requiere .NET framework 2.0 o 3.0, eso es una ventaja.

¿Fue útil?

Solución

En términos generales, para que el backend de su base de datos funcione con .net, necesita un proveedor ADO.Net.

Para MS Access (Jet), el proveedor se envía con .net.Para SQLite, existe un proveedor ADO.Net autónomo.

En cuanto a la biblioteca de la capa de acceso a datos, si desea algo de abstracción sobre ADO.Net:

Todos funcionan bien desde el marco 2.0 en adelante.

Básicamente, elegir (y hay muchas opciones)

Otros consejos

Masivo - https://github.com/robconery/massive

o

PetaPoco- https://github.com/toptensoftware/petapoco

Ambos son un único archivo .cs sin dependencias excepto lo que está en el GAC.

(divulgación completa, PetaPoco es algo que escribí)

Para un ORM liviano que funciona bien y solo requiere un ensamblaje, ¿por qué no probarlo? Velocidad de la luz de Mindscape.No es de código abierto, sin embargo, el código fuente está disponible y tiene un precio razonable; el riesgo con la mayoría de los ORM que no están bien adoptados es, por supuesto, la calidad y el nivel de soporte, y hay muy pocos otros ORM de código abierto con los que valga la pena preocuparse en . Espacio neto en estos momentos.

Debido a que no le gustan las dependencias de NHibernate, parece que no necesita un marco de registro ni ninguna de las facetas del proyecto del castillo, es decir,COI, monorraíl, etc.¿Ha considerado tal vez simplemente tomar el mínimo de requisitos de NHibernate (log4net y las colecciones de Iesi, creo, y el proxy dinámico del proyecto Castle?) y ejecutar ILMerge sobre ellos para consolidarlos en un solo ensamblaje; podría requerir un poco de manipulación. pero no es demasiado difícil, o alternativamente, puede simplemente extraer el código fuente de cada uno de estos proyectos en una compilación personalizada de NHibernate que mantiene para su organización y que elimina las características que no requiere su proyecto/organización; no es tan difícil/incómodo. Como suena, hice algo similar para un proyecto en el que queríamos beneficiarnos de un ORM, pero necesitábamos reducir el tamaño de los archivos/instaladores distribuidos.

Además, ¿podría explicar lo que cree que es demasiado "pesado" acerca de una solución basada en Nhibernate?En mi experiencia, es un marco ORM razonablemente liviano en comparación con otros.

Agregando a esta lista, también puedes echar un vistazo a Apuesto (escrito y utilizado por el propio StackOverflow).

algunas de las alternativas:
- Registro activo - Utiliza nhibernate.dll en segundo plano, pero la configuración se realiza mediante atributos.Es como la versión lite de nhibernate.
- Subsónico
- CoolStorage.NET - Lo usé mucho con proyectos pequeños.Funciona bien con varios dbs.

Aquí está un gran lista de alternativas, las que recomendaría:

  • Almacenamiento en frío
  • SODA
  • ODX
  • Lightspeed (gratis para 8 objetos o menos)

Esos 4 son los más ligeros.Subsonic, ActiveRecord y otros están dirigidos a sistemas grandes.Funcionan bien en sistemas más pequeños pero (al menos para ActiveRecord) vienen con una lista enorme de dependencias y son excesivos para un sistema pequeño.Yo elegiría Lightspeed y diría que cualquier cosa con menos de 8 objetos es un sistema pequeño, y simplemente usar NHibernate porque está ampliamente adoptado es bueno para escalar, pero a corto plazo no tiene sentido, y tener una capa entre el ORM y sus consumidores puede funcionar. alrededor de eso de todos modos.

LINQ to SQL podría ser una buena alternativa a los sistemas ORM "pesados" si lo usa correctamente.

Si no necesita un ORM completamente funcional y solo necesita una capa de datos rápida e independiente de la base de datos sobre ADO.NET, pruebe el código abierto. NI.Biblioteca de datos (V2).Es muy liviano (solo un pequeño ensamblaje, sin otras dependencias) y proporciona toda la infraestructura de capa de datos estándar:

  • abstracción de consultas y analizador para su representación de cadena llamada 'relex' (se ve así:"books(rating=5)[title,id]": muy buena alternativa a Linq-to-SQL y las expresiones se pueden componer sobre la marcha)
  • Concepto de 'vista' para encapsular consultas SQL complejas dependientes de la sintaxis de base de datos
  • disparadores de datos
  • Permisos de capa de datos para consultas de selección/actualización/eliminación.
  • Desde la caja admite proveedores MS SQL, SQLite, MySQL, Odbc/OleDb (MS Access).Se podría agregar fácilmente soporte para otras bases de datos SQL.

Su componente principal (DALC) se inicializó solo con una línea de código:

var dalc = new DbDalc(new SqlClientDalcFactory(), connectionStr);

eso es todo.Si necesita compatibilidad con el tiempo de ejecución .NET 2.0, puede intentar compilar la última versión V2 en el tiempo de ejecución 2.0 o utilizar la versión heredada anterior (NI.Data.Dalc, V1).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top