2013-03-20 7 views
6

In unserem Unternehmen arbeiten wir mit verschiedenen Datenbanksystemen (MySQL, MSSQL, PL/SQL, SQlite und SQLCe) für verschiedene Projekte zusammen. Aus diesem Grund haben wir eine Bibliothek entwickelt, die alles in ein nettes Interface bringt, wo wir uns mit jeder Datenbank verbinden können, ohne uns Gedanken darüber machen zu müssen, welche Datenbank dahinter steckt. Aber diese Bibliothek musste immer jede Datenbank auf einem Client-Computer installieren, weil .Net darauf bestand (wegen der Referenzen). Also haben wir MEF verwendet, um Datenbank-Plugins zu erstellen, bei denen die Anwendung nur das entsprechende Plugin beim Start lädt und wir keine weiteren Datenbanksysteme auf dem Host-System benötigen.Datenbank-Management-Bibliothek

Wie auch immer, wir kämpfen immer noch wegen der Unterschiede der einzelnen Datenbanken. Nehmen wir an, wir möchten Prozeduren haben, die automatisch erforderliche Tabellen und Daten in der Zieldatenbank erzeugen, wenn sie nicht verfügbar sind. Oder wenn die verschiedenen Datenbanken unterschiedliche Datentypen verwenden. Die Dinge werden sehr kompliziert und im Moment sind wir daran interessiert, auch LINQ2SQL zu verwenden, das nicht in der Lage ist, mit MySQL, SQlite und PL/SQL umzugehen.

Meine Frage:

Gibt es eine kostenlos/oss C# Bibliothek, die über diese Aufgaben übernehmen? Wo können wir die volle Kontrolle über unsere Datenbanken haben, ohne darüber nachzudenken, welche Datenbank dahinter steckt?

Antwort

0

Entity Framework tut alles was Sie brauchen. Dieses Framework hat Provider für eine Reihe von Datenbank-Engines, außerdem verfügt es über einen Migrationsmechanismus, der je nach Modell die Datenbank für Ihre Anwendung anpassen kann.

4

Jede mögliche reife ORM-Bibliothek der Arbeit macht

prüfen this Website-Vergleich der Eigenschaften und Leistung der beliebten ORM Bibliotheken wäre

+0

Ich habe die letzten Tage damit verbracht, Entity Framework zu studieren und bin mir immer noch nicht sicher, ob das unseren Bedürfnissen entspricht. Ich hoffe, Sie können einige Punkte klären: 1) Es scheint, dass EF stark von der Visual Studio Umgebung, auch app.config, abhängt, aber wir haben unsere eigene Konfigurationslösung. Wie kann ich eine Verbindungszeichenfolge ohne app.config angeben? 2) Wenn EF eine neue Datenbank erstellt, scheint es eine SQLCeDB zu erstellen. Ist das konfigurierbar? 3) Ist es möglich, mehrere Verbindungen zu verschiedenen Datenbanken gleichzeitig zu haben? – Neurodefekt

+0

1) Sie können EF vollständig ohne Visual Studio verwenden, zum Beispiel zuerst den EF-Code, VS-Designer sind jedoch nützlich und praktisch, wenn Sie ein Modell aus einer vorhandenen Datenbank erstellen, aber immer noch nicht benötigen. 2) EF kann mit jeder modernen Datenbank arbeiten 3) Überprüfen Sie http://stackoverflow.com/questions/2659942/entity-framework-4-and-multiple-database – jezzarax

0

NHibernate zu sehen meine Wahl. Es ist einfacher zu verwenden, wenn Sie über die Castle ActiveRecord-Ebene darauf zugreifen.