Ah, ich habe mich auf das Einfügen der
DB-Daten in die Entities konzentriert, eben der erste und wahrscheinlich leichteste Schritt auf dem Weg zu einem O/RM
. Für solche Sachen wie Change Tracking und Validation muss tatsächlich etwas im Setter geschehen, da hast du schon recht. Wenn man also ein
Validate('ThisProperty') vermeiden will, sehe ich bei statisch typisierten Sprachen nur zwei Möglichkeiten:
- Runtime Proxies: Alle Properties werden als virtual markiert und zur Laufzeit vom Mapper-System überschrieben. So machen das zum Beispiel Hibernate in Java und NHibernate & Entity Framework in .NET. In Delphi dürftest du da aber relativ chancenlos sein.
- Code Generation: Wenn man den Code selbst nicht schreiben will, muss er eben automatisch aus dem Designer/der XML-Config/... erstellt werden . Damit sind die Property-Namen garantiert aktuell, von der generierten Klasse kann dann abgeleitet und entsprechende virtuelle Methoden wie "PropAChanged" überschrieben werden. So macht es LINQ To SQL.