Benutzer mit den meisten Antworten
Eigene Klasse(n) für Datenbankoperationen

Frage
-
Moin moin,
ich möchte eine kleine DB-Anwendung schreiben, welche natürlich die Operationen Neu (Insert), Anzeigen (Select), Ändern (Update), Löschen (Delete) verwendet.
Nun meine Frage: Um keinen Spaghetti-Code zu produzieren sollte man ja verschiede Klassen nutzen. Wie ist es allgemein üblich? Alle DB-Operationen in einer Klasse oder für jede Operation eine eigene Klasse zu schreiben?
Gibt es "Vorlagen" für solche Klasse oder wie macht Ihr das?
Bin für jede Hilfe dankbar.
Gruß und ein Schönes Wochenende
Antworten
-
Hallo,
das hängt ein wenig davon ab, welche Technologie Du einsetzen möchtest.
.NET kennt mittlerweile einige:- ADO.NET pur
- typisierte DataSets in Verbindung mit TableAdaptern,
- LINQ To SQL,
- Entity Framework (in verschiedenen Varianten)
- und weitere wie NHibernate.
Typisierte DataSets bringen mit ihren TableAdapter eine Datenzugriffsschicht mit.
Microsoft favorisiert jedoch mittlerweile das Entity Framework.In Data Access Practices Using Microsoft .Net: A Nerdly Comparison werden die verschiedenen Techniken
anhand des Repository Musters gezeigt (wobei es eine leichtgewichtige Interpretation des DDD Musters ist).
Die Beispiele sind zwar in C#, der Aufbau ist in Visual Basic identisch.Für den Anfang darfst Du es Dir auch einfacher machen. Ich hatte vor kurzem eine einfache
Datenschicht gezeigt in Problem mit LINQtoSQL. Das kann jede der obigen Technologien sein
und ist den Bedürfnissen nach erweiterungsfähig.Gruß Elmar
- Als Antwort vorgeschlagen Robert Breitenhofer Montag, 8. August 2011 07:57
- Als Antwort markiert Thorsten Dörfler Montag, 8. August 2011 08:58
-
Hallo,
Übertreiben sollte man es mit der Klassenbildung auch nicht.
Funktional zusammengehöriges sollte in einer Klasse zusammen gefasst werden -
das gilt nicht nur für Datenbankoperationen.Schau Dir mal Martin Fowler's:Catalog of Patterns of Enterprise Application Architecture an
Dort kann man viele gängige Muster ableiten, auch wenn sie in den wenigsten Fällen
in Reinkultur existieren. Das klassische CRUD wäre dort das Table Data GatewayGruß Elmar
- Als Antwort markiert Thorsten Dörfler Montag, 8. August 2011 08:58
Alle Antworten
-
Hallo,
das hängt ein wenig davon ab, welche Technologie Du einsetzen möchtest.
.NET kennt mittlerweile einige:- ADO.NET pur
- typisierte DataSets in Verbindung mit TableAdaptern,
- LINQ To SQL,
- Entity Framework (in verschiedenen Varianten)
- und weitere wie NHibernate.
Typisierte DataSets bringen mit ihren TableAdapter eine Datenzugriffsschicht mit.
Microsoft favorisiert jedoch mittlerweile das Entity Framework.In Data Access Practices Using Microsoft .Net: A Nerdly Comparison werden die verschiedenen Techniken
anhand des Repository Musters gezeigt (wobei es eine leichtgewichtige Interpretation des DDD Musters ist).
Die Beispiele sind zwar in C#, der Aufbau ist in Visual Basic identisch.Für den Anfang darfst Du es Dir auch einfacher machen. Ich hatte vor kurzem eine einfache
Datenschicht gezeigt in Problem mit LINQtoSQL. Das kann jede der obigen Technologien sein
und ist den Bedürfnissen nach erweiterungsfähig.Gruß Elmar
- Als Antwort vorgeschlagen Robert Breitenhofer Montag, 8. August 2011 07:57
- Als Antwort markiert Thorsten Dörfler Montag, 8. August 2011 08:58
-
Hallo,
Übertreiben sollte man es mit der Klassenbildung auch nicht.
Funktional zusammengehöriges sollte in einer Klasse zusammen gefasst werden -
das gilt nicht nur für Datenbankoperationen.Schau Dir mal Martin Fowler's:Catalog of Patterns of Enterprise Application Architecture an
Dort kann man viele gängige Muster ableiten, auch wenn sie in den wenigsten Fällen
in Reinkultur existieren. Das klassische CRUD wäre dort das Table Data GatewayGruß Elmar
- Als Antwort markiert Thorsten Dörfler Montag, 8. August 2011 08:58
-
Hallo,
wie angedeutet, da gibt es reichlich Meinungen zu dem Thema.
Je nach verwendeter Schnittstelle und Umgebung (Desktop vs. Web - statuslos)
ändert sich das zudem.Aber zu viel den Kopf sollte man sich darüber auch nicht zerbrechen,
da kommt meist nicht sehr viel Besseres bei raus.Wenn Du einen ersten Entwurf hast, kannst Du ihn gerne posten.
Gruß Elmar