Entità di carico NHibernate con parte della sottocampionamento

C’è un modo per caricare un’ quadro di NHibernate, con una clausola su una collezione figlio? Ho uno scenario in cui registro le modifiche in “Operazioni”, ovvero un’operazione può contenere modifiche a più entity framework. Quando voglio caricare il log per un’entity framework specifica, carico tutte le operazioni con qualsiasi modifica apportata a quell’ quadro. Caricando queste operazioni si caricano tutte le modifiche, voglio solo caricare le modifiche rilevanti.

Classi:

public class Operation{ public virtual DateTime TimeStamp { get; set; } public virtual IList Changes { get; private set; } } public class Change{ public virtual string ChangeText { get; set; } public virtual int EntityId { get; set; } } 

Ottenere le operazioni per una determinata entity framework

  Session.QueryOver().Where(o => o.Changes.Any(c => c.EntityId == entityId)); 

I. Come affermato in questa risposta di Oskar Berggren: https://stackoverflow.com/a/13864061/1679310 puoi applicare il filtro 18.1. Filtri NHibernate

Sommario:

Regola la tua mapping

    

E poi chiamalo in questo modo:

 ISession session = ...; session.EnableFilter("myFilter").SetParameter("myFilterParam", "some-value"); IList results = Session.QueryOver() .Where(... .List(); 

II. Un’altra opzione è filtrare le Changes quando si interrompe l’ Operation : 16.4. associazioni

 IQueryOver query = session.QueryOver() .JoinQueryOver(o => o.Changes) // added explicit  .Where(c => c.EntityId == entityId);