Ich bin auf den Punkt jetzt in meiner Programmierung Entwicklung, die ich versuche, objektorientiertes Design anstelle der grundlegenden hinter dem Knopf verfahren Sachen, die ich gemacht habe, zu nutzen.Wie verwalten Sie Datenbankverbindungen und Transaktionen über Einfügungen auf objektorientierte Weise, mit VB.net oder C#?
In einem aktuellen Projekt wiederholte Ich nehme, Kopieren und Einfügen von SQL Server-Code einfügen und es Klassen mit Eigenschaften, Methoden usw. Migration ...
Eine Frage, die ich bei stecken zu bleiben habe, ist, wie man Halten Sie die Verbindungen zur Datenbank niedrig, während Sie Einfügungen über mehrere Objekte und somit mehrere Tabellen durchführen.
In einer prozeduralen Weise habe ich eine ADO.net-Transaktion verwendet, um in eine Tabelle zu schreiben und dann basierend auf der ID des eingefügten Datensatzes zusätzliche Informationen in eine andere Tabelle zu schreiben - ohne die Verbindung zu schließen, bis der zweite Job abgeschlossen ist . Ich benutze die Transaktion so, wenn die spätere Einfügung fehlschlägt, kann die erste Einfügung rückgängig gemacht werden, und mit try, catch, schließlich, um die Verbindung zu schließen, ob es erfolgreich ist oder fehlschlägt.
Wie gehst du damit in der objektorientierten Welt um?
EDIT: Danke an alle Antworten. Ich verstehe es. Hier ist eine weitere Frage, die auch dazu beigetragen hat, es für mich zu klären: ASP.NET/ADO.NET: Handling many database connections inside a .NET Object?
Ihre Annahme ist korrekt ... Klassen und Instanzen von Klassen, die Elemente in der Geschäftsdomäne darstellen) ... Wie sieht die "Manager" -Klasse aus? – codethrift
Und ... wenn ich keine SQL-Transaktionen verwende, nehme ich an, dass die Manager-Klasse den neu erstellten 1st-Level-Eintrag löschen muss, wenn der 2nd-Level-Insert fehlschlägt? – codethrift
Hmm, ich glaube nicht, dass ich so weit gehen würde ... Das ist die Verantwortung des Programmierers/Benutzers imho. In meiner Situation ist mein 'Manager' nur ein Wrapper um ein NHibernate-ISession-Objekt, das Methoden StartTransaction/Commit, etc .. hat. –