Domanda

Questo NHIBERNATE BLOG VOT Note come distaccata QueryOver query (analogo a DetachedCriteria) può essere creato (usando QueryOver.Of<T>()). Tuttavia, guardandolo, non mi sembra affatto analogo.

Con i criteri distaccati, creerei la mia istanza e la imposterei come ho bisogno, e successivamente la chiamata GetExecutableCriteria() Per quindi assegnare la sessione ed eseguire la query. Con il "distaccato" QueryOver, la maggior parte dell'API non è disponibile (cioè aggiungere restrizioni, unito, ordinare, ecc ...) fino a quando non chiamo GetExecutableQueryOver, che richiede prende un ISession o IStatelessSession, a quel punto non sei più disconnesso.

Come lavori con il distacco QueryOver istanze?

MODIFICARE:

Il problema effettivo era correlato al modo in cui sto memorizzando l'istanza di queryover indipendente:

public class CriteriaQuery<T>
{
    internal protected QueryOver<T> _QueryOver { get; set; }

    public CriteriaQuery()
    {
        _QueryOver = QueryOver.Of<T>();
    }

    // Snip
}

Dovrebbe essere un QueryOver<T, T>.

È stato utile?

Soluzione

Sto usando NHIBERNATE 3.1.0.4000. Il seguente codice compila correttamente:

Employee salesRepAlias = null;

var query = QueryOver.Of<Customer>()
    .JoinAlias(x => x.SalesRep, () => salesRepAlias)
    .Where(x => x.LastName == "Smith")
    .Where(() => salesRepAlias.Office.Id == 23)
    .OrderBy(x => x.LastName).Asc
    .ThenBy(x => x.FirstName).Asc;

return query.GetExecutableQueryOver(session)
    .List();

Ciò illustra l'utilizzo di restrizioni, giunti e ordini su una queryover indipendente proprio come faresti con una normale.

Potresti pubblicare il codice che dimostra le funzionalità API che non sono disponibili?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top