Есть ли способ фильтровать мой запрос NHibernate в поле SubType, прежде чем я попаду в базу данных, добавив ICriterion к моему выполнению DetachedCriteria?Фильтр NHibernate SubType с ICriterion
Мой код выглядит примерно так:
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();
...
}
Хотя это может быть не правильный путь, чтобы достигнуть своей цели, я надеюсь, что это по крайней мере, возможно, потому что я не с нетерпением жду того, чтобы реорганизовать мои интерфейсы, которые ожидают/создают ICriterion. Я также не обязательно имею доступ к сеансу где-нибудь рядом, где мне нужно создать объект ICriterion (но у меня есть полный контроль над псевдонимом/именованием различных полей/таблиц NHibernate, которые будут использоваться).
мне нужно было что-то вроде этого! Спасибо! В моем случае мне нужна колонка для хранения 1 для определенного типа и 2 для другого! Законченное так: вар productTypeConditional = Projections.Conditional (Restrictions.Eq ("класс", TypeOf (холодильник)), \t \t \t Projections.Constant (ProductType.Refrigerator), \t \t \t Projections.Constant (ProductType .Кусок)); – cidico