Normalerweise möchte ich die Datenbankverbindung selbst erstellen und ihre Lebensdauer manuell mit `using {} 'steuern. Zum Beispiel:Um Datenbankverbindung in Geschäftsobjekten einzukapseln oder nicht?
SqlConnection sqlConnection = new SqlConnection(connectionString);
using(sqlConnection) {
BusinessObject myBusinessObject = new BusinessObject(sqlConnection);
// do stuff with the business object
...
}
So ist es sichtbar und offensichtlich, dass ich eine Ressource verwende, die entsprechend aufgeräumt werden muss. Dies führt jedoch zu einer Menge sich wiederholender Anstrengungen. Ich bin versucht, die SQL-Verbindung innerhalb des Geschäftsobjekts zu erstellen und IDisposable darauf zu implementieren. Ich würde die Verbindung in der Dispose() Methode schließen.
using(BusinessObject myBusinessObject = new BusinessObject()) {
// do stuff with myBusinessObject
...
}
Das Problem, das ich habe ist, dass es nicht so offensichtlich sein könnte, dass das Business-Objekt entsorgt werden muss, wenn Sie es im Einsatz zu sehen.
Wie würdest du es tun?
Danke für die Antwort. Der Code, über den ich hier nachdenke, ist ziemlich einfach. Ich habe NHibernate in der Vergangenheit verwendet, bin mir nicht sicher, ob ich für dieses Projekt dorthin gehen möchte. Aber wie du schon sagtest, wäre vielleicht eine Drehung durch die Quelle eine gute Übung. – dnewcome
Wenn nHibernate zu viel erscheint, sollten Sie LINQtoSQL in Erwägung ziehen. Meiner Erfahrung nach ist es sehr leicht.Sie können die L2S-Entitäten entweder als DTOs betrachten oder sie mit partiellen Klassen/Methoden zu vollwertigen Business-Objekten erweitern. – tvanfosson