2010-08-27 5 views
6

Ich habe ein Objektmodell, das ich mit einer eingebetteten Datenbank speichern möchte. Ich habe bisher db4o, NHibernate bis SQLCE (w/linq) und RavenDB betrachtet. Dies würde in einer Desktop-C# -Anwendung verwendet werden.Suchen Sie nach Anleitungen für eingebettete .NET-Datenbanken (z. B. db4o, NHibernate oder RavenDB).

Die wichtigsten Funktionen, die ich zu Hebelkraft suchen sind: Linq oder ähnlich für Abfragen (kein SQL oder HQL), Eingebettete Daten-Engine, pocos, poco erstes Modell, keine Installation (keine Registrierung oder ähnliches)

Kann jeder schlägt man eins vor? Sind die drei die besten Entscheidungen? Gibt es andere Möglichkeiten? Kann von den dreien jemand den anderen empfehlen?

Dank

+0

mögliches Duplikat von [Eingebettete Datenbank für .net] (http://stackoverflow.com/questions/684595/embedded-database-for-net) –

+0

auch http://stackoverflow.com/questions/2842189/good- Embedded-Datenbank-Lösung-like-sQLite-for-net und http://stackoverflow.com/questions/271319/lightweight-sql-database-which-doesnt-require-installation –

Antwort

10

Nun, die drei vorgeschlagenen Datenbanken sind in ihrer Natur sehr unterschiedlich. SQLCE mit Hibernate als RDBMS mit einem ORM, db4o als Objektdatenbank und RavenDB als Dokumentendatenbank. Jeder von ihnen hat seine Stärken.

SQL CE & NHibernate-Combo Die gute:

  • Extrem gute Unterstützung im Werkzeugbau, das Wissen und eine große Gemeinschaft gibt es
  • Einfach zu MS SQL Server
  • Extrem upgrage gute Berichtunterstützung
  • Die Energie von SQL

Die schlechte:

  • Needs Mapping
  • Die Zuordnung zwischen den OO und relationaler Welt nicht einfach ist und zu Problemen mit komplexen Modellen führen kann.

RavenDB

Die gute:

  • Benötigt keine Zuordnung
  • Einfache
  • Leistungsstarke Indizierung
  • JSON & HTTP-Zugriff
  • verwenden

Die schlechte:

  • Wenn Ihre Domain zu einem Dokument orientierten Ansatz nicht paßt, wird es sehr schmerzhaft sein
  • Es ist nicht die Unterstützung.NET Framework Client Profile (die als die OP Frage von besonderer Bedeutung ist, über Embedded-Datenbanken)

db4o

Die gute:

  • keine Zuordnung Braucht
  • leicht
  • das Speichermodell zu verwenden, ist in der Nähe des Objekt-Modell. Dies funktioniert auch bei sehr komplexen Modellen.
  • -

Die schlechte:

  • Tooling-Unterstützung ist schwach.

Afaik alle drei unterstützen LINQ und POCO-Ansatz. Aber seit NHibernate & SQL CE immer noch Tonnen von Mapping ist es nicht so reibungsfrei wie es sein könnte.

Ich denke, wenn Sie Ihr Fokus auf POCO ist zunächst, LINQ-Unterstützung, ebedded Nutzung und einfach zu bedienen, würde ich RaveDB oder db4o versuchen. Wenn Sie sich auf "Sicherheit", Community-Wissen, Tool-Unterstützung und Reporting konzentrieren, würde ich mit NHibernate und SQL CE gehen.

+0

Danke. Angesichts der Tatsache, dass meine Domain nicht so groß ist, dass der Aufwand für das Mapping zu groß ist, halte ich den Ansatz von NHibernate für den besten. Vor allem wegen der Community-Unterstützung. RavenDB ist ein bisschen zu neu, um eine große Wissensbasis zu haben. –

+0

Als * embedded * -Datenbank hat NHibernate schwerwiegende Probleme. Ich würde Linq-To-SQL oder EntityFramework4 auswählen, lange bevor ich NHibernate zu diesem Zeitpunkt auswähle. Beide Technologien sind in das Framework eingebunden und haben keine externen Abhängigkeiten. –

0

Siehe this question. Überprüfen Sie für LINQ-Unterstützung DbLinq, oder da Sie bereits NHibernate verwenden möchten, können Sie den eigenen LINQ-Provider von NHibernate verwenden.

+0

habe ich die anderen Beiträge sehen. Das Problem war, dass sie sich auf eingebettete relationale Datenspeicher konzentrieren, und ich suche nach etwas, in dem ein Objektmodell gespeichert werden kann. Sie bieten Optionen für hinter NHibernate. DbLinq würde mir einen Linq-Anbieter für die zugrunde liegenden Datenspeicher zur Verfügung stellen, aber es wird die reiche POCO erste Modell nicht bieten die ich suche. ich den Vorschlag zu schätzen wissen, und wenn ich mit NHibernate gehen, könnte ich diese Optionen in Betracht ziehen. Ich bin jedoch immer noch auf der Suche nach Vorschlägen, was bei dem ersten POCO-Modell am besten funktionieren würde. –

+1

@ David B: siehe fließend nhibernate Automobil Mappings: http://wiki.fluentnhibernate.org/Auto_mapping –

+0

Danke, das war, was ich erwäge. Allerdings habe ich in letzter Zeit mehr positive Nachrichten über die anderen beiden gesehen und hoffte, herauszufinden, ob NHibernate immer noch die defacto Wahl war. –

3

Firebird ist eine tolle eingebettete Datenbank, die lange über alle modernen Funktionen einer Enterprise-Datenbank unterstützt hat:

  • ANSI SQL
  • ACID
  • Stored Procedures
  • Trigger

Sie können die .NET provider (letzte Aktualisierung 24. Mai laut der Website) und Es unterstützt Entity Framework und Linq.

Verwandte Themen