Ich entwickle derzeit eine Abfrage-Generator-Anwendung, im Grunde eine einfache grafische Benutzeroberfläche, die es Benutzern ohne SQL-Kenntnisse ermöglichen sollte, verschiedene Abfragen auf einer Datenbank zu definieren (Joins, Auswählen, Aktualisieren , einfügen, löschen). Ich werde .Net 3.5 verwenden. Meine Anwendung sollte mehrere Datenbanken unterstützen, sie sollte mit MS-SQL Server, MySQL und Oracle arbeiten, daher würde ich mich über Hinweise oder Links zu relevanten Vorlesungen unter freuen, wie man einen Provider unabhängig DAL entwirft.So erstellen Sie einen Provider unabhängig DAL (.Net)
Der Benutzer wird einen Datenbankserver, eine Datenbank auf dem aktuellen Server auswählen, die Verbindungsanmeldeinformationen angeben, verschiedene Tabellen auswählen, Abfragen definieren (mithilfe einer Reihe von Kombinationsfeldern) und schließlich die Abfragen ausführen, wenn sie gültig sind. Natürlich möchte ich in der DAL Methoden für jeden DB-Provider haben. Ich denke etwas an die Linien des Fabrikmusters.
Hinweis: Dies ist ein einfaches Schulprojekt, daher bin ich nicht an der Sicherheit oder Leistung der resultierenden Abfragen interessiert.
UPDATE: Nach etwas mehr Forschung und mit dem sehr wertvollen Input, den Sie zur Verfügung gestellt haben, entschied ich mich, DbProviderFactory zu verwenden. ORM wäre interessant, aber da ich nur einen Abfrage-Analysator/Builder brauche, sehe ich keinen Sinn darin, einen zu verwenden. Daher würde ich mich freuen, wenn Sie mich auf ein ausführliches Tutorial zur Verwendung von DbProviderFactory und den zugehörigen Klassen hinweisen würden.
Wie in der Welt wird ihm das helfen? Das Abrufen der entsprechenden DbProviderFactory ist miserabel, 0,2% der Funktionalität, der komplexeste Teil wird die tatsächliche Abfragesyntax sein, die von der DbProviderFactory-Funktionalität _at all_ nicht abgedeckt wird. –
Er fragte nichts über die Abfragesyntax. Er fragte nach einer Provider-unabhängigen DAL. DbProviderFactory gibt ihm ein bereits implementiertes Factory-Muster, auf dem seine DAL basieren soll. Der Mangel an Funktionalität ist darauf zurückzuführen, dass es in der Lage sein muss, mit einer Vielzahl von RDBMS zu arbeiten und somit keine der herstellerspezifischen Merkmale der Datenbanken zu verwenden. Wenn er sich an Straight Selects hält, aktualisiert, löscht und einfügt, sollte es keine Probleme geben. Aber gewährt, ORM gibt Ihnen mehr. –
Wie für die Verwendung von ORM: Wenn die Anwendung hart codierte Geschäftsobjekte hat, wird es perfekt funktionieren. Aber wenn es sich bei der Anwendung um einen einfachen Query Builder/Runner ohne spezifische Domäne (wie den Query Analyzer von MS) handelt, ist ORM, soweit ich weiß, nicht viel hilfreich. Bitte korrigieren Sie mich, wenn ich falsch liege. Ich bin nicht zu 100% über die Verwendung von ORM informiert. –