Domanda

Ho un modello a oggetti che voglio da memorizzare, utilizzando un database incorporato. Sono stato finora guardando db4o, NHibernate a SQLCE (w / LINQ), e RavenDB. Questo potrebbe essere utilizzato in un'applicazione desktop C #.

La chiave dispone Sto cercando di leva sono: Linq o simili per le query (non SQL o HQL), motore di dati embedded, pocos, poco prima del modello, senza installare (nessun registro o simili)

Può qualunque suggerire uno? Sono i tre Cerco ai migliori scelte? Ci sono altre opzioni? Dei tre, qualcuno può raccomandare uno sopra l'altro?

Grazie

È stato utile?

Soluzione

Bene le tre basi di dati proposti sono molto diversi nella loro natura. SQLCE con Hibernate come RDBMS con un ORM, db4o come oggetto di database e RavenDB come database di documenti. Ognuno di loro ha i suoi punti di forza.

SQL CE & NHibernate-Combo Il buono:

  • Estremamente un buon supporto in attrezzature, la conoscenza e una grande comunità c'è
  • Facile da upgrage ai server MS SQL
  • Extrem supporto segnalazione buona
  • La potenza di SQL

La cattiva:

  • esigenze di mappatura
  • La mappatura tra il OO e del mondo relazionale non è facile e può portare a problemi con modelli complessi.

RavenDB

La buona:

  • Non ha bisogno di alcuna mappatura
  • Facile da usare
  • Potente indicizzazione
  • JSON & HTTP accesso

La cattiva:

  • Se il dominio non si adatta ad un approccio document-oriented, sarà molto doloroso
  • non supporta il profilo .NET Framework client (che è di particolare importanza in quanto domanda del PO è relativa database integrati)

db4o

La buona:

  • Non ha bisogno di alcuna mappatura
  • Facile da usare
  • Il modello di archiviazione è vicino il-modello a oggetti. Questo funziona anche per i modelli molto complessi.
  •  -

La cattiva:

  • Supporto Tooling è debole.

AFAIK tutti e tre LINQ sostegno e POCO-primo approccio. Tuttavia, poiché NHibernate e SQL CE ancora bisogno di tonnellate di mappare la sua non è come l'attrito libero come potrebbe essere.

Credo che se il vostro obiettivo è quello di POCO prima, LINQ-supporto, l'utilizzo ebedded e facile da usare, vorrei provare RaveDB o db4o. Se il vostro obiettivo è quello di 'sicurezza', comunità di conoscenza, strumento di supporto e reporting vorrei andare con NHibernate e SQL CE.

Altri suggerimenti

Firebird è un formidabile database incorporato, che ha a lungo sostenuto tutte le caratteristiche moderne di un database aziendale:

  • ANSI SQL
  • ACIDO
  • Le stored procedure
  • Trigger

È possibile ottenere il .NET fornitore (ultimo aggiornamento 24 maggio secondo il sito) e supporta Entity Framework e LINQ.

questa domanda . Per il supporto LINQ, controllare DbLinq , o dal momento che già intende utilizzare NHibernate è possibile utilizzare NHibernate di proprio fornitore di LINQ.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top