DetachedCriteria 실행에 ICriterion을 추가하여 데이터베이스를 조회하기 전에 SubType 필드에 NHibernate 쿼리를 필터링 할 수있는 방법이 있습니까? 이 내 목표를 달성 할 수있는 올바른 방법을하지 않을 수 있지만, 내가 리팩토링하는 것을 기대하고 있지 않다 있기 때문에 적어도 가능 바라고ICriterion으로 NHibernate SubType 필터링하기
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를 보유 할 열이 필요했습니다! VAR productTypeConditional = Projections.Conditional (Restrictions.Eq ("클래스"의 typeof (냉장고)), \t \t \t Projections.Constant (ProductType.Refrigerator), \t \t \t Projections.Constant (ProductType : 이처럼 종료 .조각)); – cidico