Cerchi una guida su database embedded NET (come db4o, NHibernate, o RavenDB)
-
01-10-2019 - |
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
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.