È possibile eseguire una ricerca inversa globale sugli oggetti gestiti da NHibernate?Riferimenti di oggetti di ricerca globali in NHibernate
In particolare, ho una classe persistente chiamata "Io". Ci sono un numero enorme di campi su più tabelle che possono potenzialmente contenere un oggetto di quel tipo. C'è un modo (data un'istanza specifica di un oggetto Io), per recuperare una lista di oggetti (di qualsiasi tipo) che effettivamente fanno riferimento a quell'oggetto specifico? (Punti bonus se è in grado di identificare quali campi specifici contengono effettivamente il riferimento, ma non è critico.)
Poiché i mapping NHibernate definiscono tutti i collegamenti (e il database sottostante ha corrispondenti collegamenti di chiave esterna), dovrebbe essere qualche modo per farlo.
Immaginate questo tipo di struttura:
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; }
// ...
}
Data una specifica istanza di Io, voglio scoprire che è riferimento la ThingTwo con id 12. o che è riferisce a questo e anche dal ThingOne con id 16. Se possibile, anche che il primo riferimento è tramite SensorInput2, ad esempio.
All'inizio questo mi ha dato qualche problema, ma si è rivelato un errore nelle mie mappature hbm. Dopo aver appiattito il risultato in una singola lista, questo fa esattamente quello che cercavo. Grazie! – Miral
È così bello, ma uno dovrebbe essere a conoscenza di ** toSearch.GetType() **. Può restituire l'oggetto proxy invece di quello reale. –
@ S.M.Amin si sta mescolando Get() con Load().Get() non restituirà un proxy, Load() sarà – Jaguar