Можно ли как-то отфильтровать свой запрос NHibernate в поле SubType, прежде чем я попаду в базу данных, добавив ICriterion к своему выполнению DetachedCriteria?
Мой код выглядит примерно так:
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, которые будут использоваться).