우리는 NH 필터를 비슷한 용도로 사용하며 정상적으로 작동합니다. 필터를 적용 할 필요가없는 경우 필터의 값을 설정하지 않아도됩니다. 우리는 더 기본적인 것들, 시간의 거의 100 % 적용되는 필터, fx 삭제 된 객체 필터, 클라이언트 데이터 분리 등을 위해이 필터들을 사용합니다. 당신이 찾고있는 확장 성 측면을 확신하지 못합니까?
더 높은 수준의 복잡한 필터링의 경우 저장소 루트를 조작하는 사용자 지정 클래스를 사용합니다. 다음과 같은 뭔가 :
당신이 당신의 NH 사용과 통합 된 IoC 컨테이너는이 같은 쉽게 일반화하고 스택에 연결 할 수있는 경우
public IQueryOver<TIn, TOut> Apply(IQueryOver<TIn, TOut> query)
{
return query.Where(x => ...);
}
. 우리는 어디에서 간단한 절을하는 이러한 저장소 조작자를 가지고 있으며 복잡한 다른 부분을 생성하는 다른 부분은 도메인 논리를 참조하는 항목과 다른 항목은 두 번째 테이블을 조인하고 다른 항목을 필터링합니다.
그래, 내가 그런 식으로 뭔가를 할 수있는 일종의 사용자 (웹 환경)의 세션에 필터를 저장할 것 같아요. 대부분의 필터는 조인이 아닌 테이블 열 자체에 있습니다. –
잘 작동합니다. 우리의 환경은 ASP.NET 사이트이기도합니다. 우리는 Castle.Windsor와 함께 커스텀'DefaultTypedFactoryComponentSelector' 팩토리를 사용합니다. 필터 속성 클래스와 함께, 문자열 이름만을 사용하여 컨테이너로부터 필터를 가져올 수 있습니다 (하드 코드 된 필터를 포함하는 정적 클래스 이 메소드는 Apply를 호출함으로써 설정 될 수있다. 선택적으로 인터페이스의 void SetValue (T value) 메소드를 통해 컨텍스트 데이터를 설정한다. – Svend