2009-05-04 3 views
1

SubSonic을 사용하여 FreeTextTable (순위가 필요하기 때문에)을 사용하여 테이블을 쿼리해야합니다. AFAIK, Subsonic은 FullText를 지원하지 않기 때문에 2 개의 매개 변수 (검색 키워드와 최대 결과 수)가 필요한 간단한 UDF 함수 (테이블 함수)를 작성했습니다. 이제이 FreeTextTable을 사용하여 메인 테이블을 내부 테이블에 조인 할 수 있습니까? 인라인 쿼리는 옵션이 아닙니다. 예제 :내부 방법 SubSonic을 사용하는 매개 변수로 UDF 함수 조인

테이블 기사 Id, ArticleName, 작성자, ArticleStatus를 사용하는 기사.

ArticleName (fulltext), 작성자 (다른 전체 텍스트이지만 다른 검색 키워드가있는), ArticleStatus (int) 중 하나 이상으로 검색을 수행 할 수 있습니다.

실제로 쿼리는 훨씬 더 복잡하며 다른 조인이 있습니다 (사용자 선택에 따라 다름).

SubSonic이이 상황을 처리 할 수없는 경우 가장 좋은 해결책은 오래된 일반 SQL (아마도 UDF를 만들 필요가 없음)입니다.

도움 주셔서 감사합니다.

ps : SubSonic 3.0이이 상황을 처리합니까?

답변

0

3.0은이 작업을 수행 할 수 있지만 우리는 (아직) 기능을 아직 처리하지 않았기 때문에 템플릿을 만들어야합니다. 나는 앞으로 몇 주 안에이 일을 할 것입니다. 2.2는 당신을 위해 이것을 할 것이라고 생각하지 않습니다.

0

귀하의 질문이 이보다 더 복잡하다는 것을 알고 있지만, 약간의 마사지를 통해 SubSonic 2.2를 통해 테이블 ​​가치가있는 기능에서 결과를 얻을 수 있습니다.

생성 된 뷰 중 하나에서 .cs 파일을 안전한 폴더로 복사 한 다음 UDF에서 반환 한 열과 일치하도록 모든 속성을 변경하십시오.

그런 다음 컬렉션에 매개 변수와 함께 생성자 메서드를 추가하고 InlineQuery를 실행하게합니다.

public partial class UDFSearchCollection 
{ 
    public UDFSearchCollection(){} 

    public UDFSearchCollection(string keyword, int maxResults) 
    { 
     UDFSearchCollection coll = new InlineQuery().ExecuteAsCollection<UDFSearchCollection>("select resultID, resultColumn from dbo.udfSearch(@keyword, @maxResults)",keyword,maxResults); 
     coll.CopyTo(this); 
     coll = null; 
    } 
} 

public partial class UDFSearch : ReadOnlyRecord<UDFSearch>, IReadOnlyRecord 
{ 
    //all the methods for read only record go here 
    ... 

} 

표 개체에 자체 매개 변수 컬렉션이 없기 때문에 내부 조인이 조금 더 어려워 질 수 있습니다. 하지만 ...

관련 문제