Ist es möglich, eine globale umgekehrte Suche auf von NHibernate verwalteten Objekten durchzuführen?Globale Objektreferenzen in NHibernate finden
Insbesondere habe ich eine persistente Klasse namens "Io". Es gibt eine große Anzahl von Feldern in mehreren Tabellen, die möglicherweise ein Objekt dieses Typs enthalten können. Gibt es eine Möglichkeit (bei einer bestimmten Instanz eines Io-Objekts), eine Liste von Objekten (beliebigen Typs) abzurufen, die tatsächlich auf dieses bestimmte Objekt verweisen? (Bonuspunkte, wenn angegeben werden kann, welche spezifischen Felder tatsächlich die Referenz enthalten, aber das ist nicht kritisch.)
Da die NHibernate-Zuordnungen alle Verknüpfungen definieren (und die zugrunde liegende Datenbank über entsprechende Fremdschlüsselverbindungen verfügt), sollte angegeben werden einige Weg, es zu tun.
diese Art von Struktur Stellen Sie sich vor:
class Io
{
public int Id { get; set; }
// other fields specific to the Io type
}
class ThingOne
{
public int Id { get; set; }
public Io SensorInput { get; set; }
public Io SolenoidOutput { get; set; }
// other stuff
}
class ThingTwo
{
public int Id { get; set; }
public Io SensorInput1 { get; set; }
public Io SensorInput2 { get; set; }
public SubThing Doohickey { get; set; }
// ...
}
class SubThing
{
public int Id { get; set; }
public Io ControlOutput1 { get; set; }
// ...
}
eine bestimmte Instanz von Io gegeben, möchte ich feststellen, dass es 12 von der ThingTwo mit id bezeichnet ist, oder dass es mit durch das und auch durch die ThingOne referenziert ist ID 16. Wenn möglich, auch, dass die erste Referenz zum Beispiel über SensorInput2 erfolgt.
Zuerst gab mir das einige Probleme, aber das stellte sich als Fehler in meinen hbm-Mappings heraus. Nachdem ich das Ergebnis in eine einzige Liste verflacht habe, macht dies genau das, was ich wollte. Vielen Dank! – Miral
Es ist so schön, aber man sollte sich ** toSearch.GetType() ** bewusst sein. Es kann das Proxy-Objekt anstelle des echten Objekts zurückgeben. –
@ S.M.Amin mischen Sie Get() mit Load().Get() wird keinen Proxy zurückgeben, Load() wird – Jaguar