Was bedeutet das Problem der Objektidentität in NHibernate?
Antworten
Zu viele Anzeigen?Das Problem der Objektidentität besteht darin, dass es keine perfekte (d.h. 100% exakte) Methode gibt, um sicherzustellen, dass eine Objektidentität für ein einfaches CLR-Objekt eine 1:1-Zuordnung zu einer Objektidentität in NHibernate hat.
Der Grund dafür ist, dass die Objektidentität im einen Fall (CLR) durch den Objektzeiger, im anderen Fall durch einen Datenbank-ID-Wert definiert ist.
Daher ist es möglicherweise nicht möglich, ein CLR-Objekt vollständig zuverlässig auf ein NHibernate-Objekt abzubilden.
Übrigens: Das ist nichts Besonderes für NHibernate, sondern gilt für jeden objektrelationalen Mapper.
Das Problem der Objektidentität befasst sich mit der Nichtübereinstimmung von Objekt und Beziehung und der Tatsache, dass die Äquivalenzbeziehung zwischen Objekten auf unterschiedliche Weise definiert werden kann.
Standardmäßig wird die Äquivalenz zwischen Objekten über den Objektzeiger im Speicher definiert. Das bedeutet, dass zwei Objekte, die mit demselben PK in zwei verschiedenen Sitzungen geladen werden, als unterschiedlich betrachtet werden, was ein wenig widersinnig ist.
Es liegt also nahe, die Äquivalenzrelation außer Kraft zu setzen und die PK so zu verwenden, dass zwei solche Objekte als gleichwertig betrachtet werden. Aber wie geht man dann mit Objekten um, die noch nicht gespeichert wurden und denen noch keine PK zugewiesen wurde? Jetzt sehen Sie wahrscheinlich, auf welche Art von Problemen wir stoßen...
Weitere Einzelheiten finden Sie unter Was sind die besten Praktiken zur Umsetzung der Gleichstellung? in der ich verschiedene Strategien und Probleme im Zusammenhang mit diesem Problem aufgeführt habe.