nhibernate - ¿Cómo trabajas con instancias separadas de QueryOver?
query over (1)
Estoy usando NHibernate 3.1.0.4000. El siguiente código se compila correctamente:
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();
Esto ilustra el uso de restricciones, uniones y pedidos en un QueryOver independiente, tal como lo haría con uno normal.
¿Podría publicar el código que demuestra las características de la API que no están disponibles?
Esta entrada del blog de NHibernate señala cómo se pueden QueryOver
consultas separadas de QueryOver
(análogas a DetachedCriteria
) (utilizando QueryOver.Of<T>()
). Sin embargo, al mirar esto, no me parece en absoluto análogo.
Con DetachedCriteria, crearía mi instancia y la configuraría como lo necesite, y luego llamaré a GetExecutableCriteria()
para luego asignar la sesión y ejecutar la consulta. Con el QueryOver
"separado", la mayor parte de la API no está disponible (es decir, para agregar restricciones, uniones, pedidos, etc.) hasta que llame a GetExecutableQueryOver
, que requiere una ISession
o IStatelessSession
, en cuyo momento ya no IStatelessSession
desconectado. .
¿Cómo trabajas con instancias separadas de QueryOver
?
EDITAR:
El problema real estaba relacionado con la forma en que estoy almacenando la instancia separada de QueryOver:
public class CriteriaQuery<T>
{
internal protected QueryOver<T> _QueryOver { get; set; }
public CriteriaQuery()
{
_QueryOver = QueryOver.Of<T>();
}
// Snip
}
Debería ser un QueryOver<T, T>
.