Laden...

NHibernate/ActiveRecord ; Select auf transientes Objekt

Erstellt von JuyJuka vor 12 Jahren Letzter Beitrag vor 12 Jahren 610 Views
JuyJuka Themenstarter:in
2.187 Beiträge seit 2005
vor 12 Jahren
NHibernate/ActiveRecord ; Select auf transientes Objekt

verwendetes Datenbanksystem: NHibernate/ActiveRecord

Hallo @All,

wiedermal hab ich ein NHibernate/Castle.AcvtiveRecord Problem.

  • Ich habe ein Do/Undo-Szenario.
  • Es werden mehrer Objekte "gleichzeitig" erzeugt.
  • Eines der erzeugten Objekte verweist auf ein anderes erzegutes Objekt.
  • Die Do/Undo-Befehle sind genauso wie die Objekte die angelegt werden Persisten.
  • Die erzeugten Objekte werden ehr aus der Datenbank gelöscht als die Do/Undo-Befehle, deshalb haben die Do/Undo-Objekte keine refernz auf die erzeugten Objekte, sondern nur die Primärschlüssel.

Das Problem ist jetzt, wenn ich das "zweite" Objekt erzeuge muss ich irgend wie auf das "erste" Objekt zugreifen, welches im besten Fall transient ist und im schlimmsten Fall noch nicht angelegt!
Wenn ich also ein Select/Load mit NHibernate/ActiveRecord mache findet er mir das "erste" Objekt nicht (egal ob transient oder garnicht existent).

Was ich suche ist jetzt ein Best-Practice oder so etwas, bevor ich ein riesen Workaround für das ganze schreibe. (oder Suchbegriffe mit denen ich die Suchmaschienen noch füttern könnte.)

Gruß
Juy Juka

PS: Falls sich jemand für das Workaround interesiert, bitte per PN melden.

H
154 Beiträge seit 2007
vor 12 Jahren

habe ein bisschen mühe zu verstehen was du da tust - sorry 😃
aber wie wärs mit einer applikatorischen transaktion. darin hälst du dir alle relevanten objekte, die persisten und die transienten.
bei einem zugriff checked deine apptrx zuerst ob sie das objekte kennt und besitzt, und wenn nicht versucht sie es von der db zu laden.
also

  1. alles was ich brauche in die app-trx laden, bzw in der app-trx erstellen,
  2. dann verknüpfen
  3. dann alles zusammen speichern.
JuyJuka Themenstarter:in
2.187 Beiträge seit 2005
vor 12 Jahren

Hallo HappyLil,

Du scheinst alles schon richtig verstanden zu haben. Vielen dank für die Mühe.

Eine eigene art von Transaktion ist mein Workaround und funktioniert auch im moment. Es ist halt ein riesen Aufwand mit einem dutzend If-Anweisungen und fast genauso vielen zusätzlichen Properties die ich speichern muss. Ich hatte einfach auf eine elegantere Methode gehofft.

Gruß
Juy Juka