2010-08-27 40 views
6

J'ai un modèle objet que je souhaite stocker à l'aide d'une base de données intégrée. J'ai jusqu'ici regardé db4o, NHibernate à SQLCE (w/linq), et RavenDB. Cela serait utilisé dans une application C# de bureau.Recherche de conseils sur la base de données .NET intégrée (telle que db4o, NHibernate ou RavenDB)

Les principales caractéristiques Je cherche à effet de levier sont: Linq ou similaire pour les requêtes (pas SQL ou HQL), moteur de données intégrées, pocos, modèle poco premier, pas d'installation (pas de registre ou similaire)

Peut- un suggère un? Est-ce que les trois que je regarde sont les meilleurs choix? Y a-t-il d'autres options? Des trois, quelqu'un peut-il recommander un sur l'autre?

Merci

+0

duplication possible de [base de données intégrée pour .net] (http://stackoverflow.com/questions/684595/embedded-database-for-net) –

+0

aussi http://stackoverflow.com/questions/2842189/good- base de données-imbriquée-comme-sqlite-for-net et http://stackoverflow.com/questions/271319/lightweight-sql-database-which-doesnt-require-installation –

Répondre

10

Eh bien, les trois bases de données suggérées sont très différentes dans leur nature. SQLCE avec Hibernate comme RDBMS avec un ORM, db4o comme base de données d'objets et RavenDB comme base de données de document. Chacun d'eux a ses points forts.

SQL CE & NHibernate-Combo Le bon:

  • très bon soutien dans l'outillage, les connaissances et une grande communauté est là
  • Facile à upgrage aux serveurs MS SQL
  • Extrem bon support de reporting
  • La puissance de SQL

La mauvaise:

  • cartographie des besoins
  • La correspondance entre le OO et dans le monde relationnel est pas facile et peut conduire à des problèmes avec des modèles complexes.

RavenDB

La bonne:

  • n'a pas besoin de cartographie
  • Facile à utiliser
  • indexation puissant
  • JSON & accès HTTP

La mauvaise:

  • Si votre domaine ne correspond pas à une approche orientée document, il sera très douloureux
  • Il ne supporte pas.Profil NET Framework Client (qui est d'une importance particulière à la question de l'OP est en ce qui concerne les bases de données embarquées)

db4o

La bonne:

  • n'a pas besoin de cartographie
  • Facile à utiliser
  • Le modèle de stockage est proche du modèle objet. Cela fonctionne également pour les modèles très complexes.
  • -

La mauvaise:

  • support d'outillage est faible. Afaik tous les trois soutiennent l'approche LINQ et POCO-first.

Cependant, depuis que NHibernate & SQL CE a encore besoin de tonnes de cartographie, il n'est pas aussi libre que possible.

Je pense que si vous vous concentrez d'abord sur POCO, le support LINQ, l'utilisation ebedded et la facilité d'utilisation, j'essaierais RaveDB ou db4o. Si vous vous concentrez sur la «sécurité», la connaissance de la communauté, le support d'outils et les rapports, j'irais avec NHibernate et SQL CE.

+0

Merci. Étant donné que mon domaine n'est pas assez vaste pour rendre l'effort de cartographie trop important, je crois que l'approche NHibernate pourrait être la meilleure. Principalement à cause du soutien de la communauté. RavenDB est un peu trop nouveau pour avoir une grande base de connaissances pour le moment. –

+0

En tant que base de données * intégrée *, NHibernate a de sérieux problèmes. Je choisirais Linq-To-SQL ou EntityFramework4 longtemps avant de choisir NHibernate à ce stade. Ces deux technologies sont intégrées dans le framework et n'ont aucune dépendance externe. –

0

Voir this question. Pour la prise en charge LINQ, consultez DbLinq ou, puisque vous avez déjà l'intention d'utiliser NHibernate, vous pouvez utiliser le propre fournisseur LINQ de NHibernate.

+0

J'ai vu ces autres publications. Le problème était qu'ils se concentrent sur les banques de données relationnelles intégrées, et je cherche quelque chose pour stocker un modèle d'objet. Ils fournissent des options derrière NHibernate. DbLinq me fournirait un fournisseur linq pour le magasin de données sous-jacent, mais il ne fournira pas le premier modèle riche POCO que je cherche. J'apprécie la suggestion, et si je vais avec NHibernate, je pourrais envisager ces options. Cependant, je suis toujours à la recherche de suggestions pour ce qui fonctionnerait le mieux au premier modèle de POCO. –

+1

@David B: voir les cartographies automatiques de nhibernate: http://wiki.fluentnhibernate.org/Auto_mapping –

+0

Merci, ça a été ce que je pensais. Cependant, j'ai vu des nouvelles plus positives sur les deux autres ces derniers temps, et j'espérais savoir si NHibernate était toujours le choix de facto. –

3

Firebird est une base de données intégrée formidable qui a longtemps soutenu toutes les fonctionnalités modernes d'une base de données de l'entreprise:

  • ANSI SQL
  • ACID
  • Procédures stockées
  • Déclencheurs

Vous pouvez obtenir le .NET provider (dernière mise à jour le 24 mai selon le site) et il prend en charge Entity Framework et Linq.