2010-08-10 5 views
0

나는 다음과 같이 정의되는 이름에 의해 개체를 가져옵니다 EntityRepository에 존재하는 일반적인 방법이 있습니다Expression을 매개 변수로 일반 메서드에 전달하고 Expression을 CreateCriteria에 연결합니까?

이이 방법을 사용하는 서비스의 수는, 모든 것이 이제 괜찮다고 ..하지만
public IEnumerable<T> GetEntitiesByName<T>(string searchExpression) 
     where T : class, ISearchableEntity, new() 
    { 
      return _session.CreateCriteria<T>() 
       .Add(LambdaSubquery.Property<Fund>(x => x.Id) 
       .AddNameSearchCriteria<T>(searchExpression) 
       .List<T>(); 
    } 

일부 서비스에는이 방법에서 사용할 수있는 것보다 더 구체적인 검색 기능이 필요하다는 요구 사항이 있습니다.

그래서 DetachCriteria를 쿼리에 연결할 수있는 Expression (또는 뭔가)으로 전달할 수 있는지 궁금합니다. 다른 기능을 필요로하는 각 서비스는 필요한 표현식을 전달할 수 있습니다.

나는 NHibernate 나 표현식에 대해 아주 잘 알고 있지 않다. 그래서 나는 여기 깊이 내고 있을지 모른다. 나는 대체로 가능한 일에 대한 느낌을 갖기 위해 노력하고 있습니다. 그렇지 않으면 각 서비스에 대해보다 구체적인 리포지토리 메서드를 사용하여 일반 메서드를 포기해야합니다. 감사.

답변

0

my answer to a somewhat similar question에 코드 샘플을 게시하여 도움을 받으실 수 있습니다. 그러나 그것은 단지 거친 시작일뿐입니다. 전체 LINQ 표현식을 NHibernate로 변환하고 완전성을 보여주고 싶다면 먼저 기존 솔루션을 검색하는 것이 좋습니다.

: 빠른 구글 검색은 나에게 이걸 발견
관련 문제