Y a-t-il un moyen de filtrer ma requête NHibernate dans le champ SubType avant de frapper la base de données en ajoutant un ICriterion à mes DetachedCriteria en cours d'exécution?Filtrage du sous-type NHibernate avec ICriterion
Mon code ressemble à ceci:
DetachedCriteria detachedCriteria = DetachedCriteria.For(typeof(MyObject));
ProjectionList projectionList = Projections.ProjectionList();
projectionList.Add(Projections.SqlProjection("{alias}.SubType as SubType", new string[] { "SubType" }, new IType[] { TypeFactory.GetAnsiStringType(15) }));
dc.SetProjection(projectionList);
dc.Add(Expression.Eq("SubType", "MYOBJECT"));
using(ISession session = ...)
{
ICriteria criteria = detachedCriteria.GetExecutableCriteria(session);
// Blows up because I don't know how to reference the SubType
// field with an ICriterion (Expression.Eq("SubType", "MYOBJECT"))
IList list = criteria.List();
...
}
Bien que cela puisse ne pas être la bonne façon d'atteindre mon objectif, j'espère que c'est au moins possible parce que je ne suis pas impatient d'avoir à factoriser mes interfaces qui attendent/produisent un ICriterion. Je n'ai pas nécessairement accès à la session à proximité de l'endroit où j'ai besoin de créer l'objet ICriterion (mais j'ai un contrôle total sur l'aliasing/nommage des différents champs/tables NHibernate qui seront utilisés).
je besoin de quelque chose comme ça! Je vous remercie! Dans mon cas, j'avais besoin d'une colonne pour contenir 1 à un type spécifique et 2 à un autre! Nous avons fini comme ceci: var = productTypeConditional Projections.Conditional (Restrictions.Eq ("classe", typeof (réfrigérateur)), \t \t \t Projections.Constant (ProductType.Refrigerator), \t \t \t Projections.Constant (ProductType .Pièce)); – cidico