Dein Problem ist das allzeit beliebte OR Mapping, was so viel bedeuted wie Relationale Daten (Deine DB) in OOP abzubilden, und die Daten zu Mappen.
Wenn du nach ORM suchst wirst du einige Grundsätzlichen Vorgehensweisen finden, für C# kurz zusammengefasst:
Nutzt du einen aktuellen SQL Server, kannst du das in .NET integrierte Entities Framework nutzen. Sind es ältere SQL Server oder Non MS Server werden diese vom Assistenten in VS nicht mehr unterstützt (zumnidest unter VS 2010), die Lösung ist dann ein OpenSource ORM Framework wie NHibernate.
community.jboss.org/wiki/NHibernateforNET
Egal welches Grundsystem du hast, ab jetzt kannst du LINQ/Lambda Expressions nutzen, und das Subsystem kümmert kümmert sich dann selber darum, wann Daten wirklich geholt werden müssen.
C#-Quelltext
1: 2: 3: 4: 5: 6:
| var customerManager = new CustomerManager();
var mycustomers = from c in customerManager.Customers select c;
var first = mycustomers.First(); |
Aufpassen muss man einfach, dass man sowas...
C#-Quelltext
1:
| var customerlist = mycustomers.ToList(); |
...vermeidet, wenn es nicht unbedingt nötig ist. Ein ToList() generiert dann wirklich alle Objekte, obwohl man auch hier mit Proxy Techniken ein sehr spätes Laden (just in time, wenn die einzelnen Properties der Objekte benötigt werden) erreichen kann.
So ein System würde ich aber nicht selber entwerfen sondern die oben genannten nutzen
Grüsse