2010-08-27 63 views
6

Tengo un modelo de objetos que quiero almacenar utilizando una base de datos incrustada. Hasta ahora he estado mirando db4o, NHibernate a SQLCE (w/linq) y RavenDB. Esto se usaría en una aplicación de escritorio C#.Buscando orientación sobre la base de datos .NET incrustada (como db4o, NHibernate o RavenDB)

Las características clave Estoy buscando al apalancamiento son: LINQ o similar para consultas (sin SQL o HQL), el motor de datos incrustados, Pocos, primer modelo poco, sin instalar (hay un registro o similar)

Puede cualquier uno sugiere uno? ¿Los tres estoy buscando las mejores opciones? ¿Hay otras opciones? De los tres, ¿alguien puede recomendar uno sobre el otro?

Gracias

+0

posible duplicado de [Base de datos incrustada para .net] (http://stackoverflow.com/questions/684595/embedded-database-for-net) –

+0

también http://stackoverflow.com/questions/2842189/good- embedded-database-solution-like-sqlite-for-net y http://stackoverflow.com/questions/271319/lightweight-sql-database-which-doesnt-require-installation –

Respuesta

10

Bueno, las tres bases de datos sugeridas son muy diferentes en su naturaleza. SQLCE con Hibernate como RDBMS con ORM, db4o como base de datos de objetos y RavenDB como base de datos de documentos. Cada uno de ellos tiene sus puntos fuertes.

SQL CE & NHibernate-Combo Lo bueno:

  • extremadamente buen apoyo en herramientas, los conocimientos y de una gran comunidad está ahí
  • Fácil de upgrage a los servidores MS SQL
  • Extrem buen soporte de informes
  • La potencia de SQL

Lo malo:

  • necesidades mapeo
  • El mapeo entre la OO y el mundo relacional no es fácil y puede conducir a problemas con modelos complejos.

RavenDB

Lo bueno:

  • No necesita ningún mapeo
  • Fácil de usar
  • indexación Potente
  • JSON & acceso HTTP

Lo malo:

  • Si su dominio no se ajusta a un enfoque orientado al documento, será muy doloroso
  • No es compatible con el.Perfil NET Framework Client (que es de particular importancia como la pregunta del OP está en relación con las bases de datos embebidas)

db4o

Lo bueno:

  • no necesita ningún mapeo
  • Fácil de usar
  • El modelo de almacenamiento está cerca del objeto-modelo. Esto también funciona para modelos muy complejos.
  • -

Lo malo: el apoyo de herramientas

  • es débil.

Afaik las tres admiten el enfoque LINQ y POCO-first. Sin embargo, dado que NHibernate & SQL CE todavía necesita toneladas de mapeo, no es tan libre de fricción como podría serlo.

Creo que si su atención se centra en POCO primero, soporte LINQ, uso ebedded y fácil de usar, probaría RaveDB o db4o. Si se enfoca en la 'seguridad', el conocimiento de la comunidad, el soporte de herramientas y la elaboración de informes, yo iría con NHibernate y SQL CE.

+0

Gracias. Dado que mi dominio no es tan grande como para hacer demasiado esfuerzo el mapeo, creo que el enfoque NHibernate podría ser mejor. Principalmente por el apoyo de la comunidad. RavenDB es demasiado nuevo para tener una gran base de conocimientos todavía. –

+0

Como base de datos * incrustada, NHibernate tiene problemas serios. Elegiría Linq-To-SQL o EntityFramework4 mucho antes de elegir NHibernate en este momento. Ambas tecnologías están integradas en el marco y no tienen dependencias externas. –

0

Ver this question. Para soporte de LINQ, consulte DbLinq, o como ya tiene la intención de utilizar NHibernate, puede usar el propio proveedor LINQ de NHibernate.

+0

Vi esas otras publicaciones. El problema es que se centran en almacenes de datos relacionales incrustados, y estoy buscando algo para almacenar un modelo de objetos. Ofrecen opciones para NHibernate. DbLinq me proporcionaría un proveedor de linq para el almacén de datos subyacente, pero no proporcionará el rico primer modelo de POCO que estoy buscando. Agradezco la sugerencia, y si voy con NHibernate, podría considerar esas opciones. Sin embargo, todavía estoy buscando sugerencias sobre lo que funcionaría mejor en el primer modelo de POCO. –

+1

@David B: ver las asignaciones automáticas de nhibernate con fluidez: http://wiki.fluentnhibernate.org/Auto_mapping –

+0

Gracias, eso fue lo que estaba considerando. Sin embargo, he estado viendo más noticias positivas sobre los otros dos últimamente, y esperaba averiguar si NHibernate seguía siendo la opción de hecho. –

3

Firebird es una base de datos integrada excelente que ha apoyado durante mucho tiempo todas las características modernas de una base de datos de la empresa:

  • ANSI SQL
  • ACID
  • Los procedimientos almacenados
  • disparadores

Puede obtener el .NET provider (actualizado por última vez el 24 de mayo según el sitio) y es compatible con Entity Framework y Linq.

Cuestiones relacionadas