문제

필사적으로 LinqKits PrescticateBuilder를 사용하여 사용자가 텍스트 상자에 검색어를 입력하고 두 개의 데이터베이스 테이블/엔티티 세트에서 레코드를 반환 할 수 있지만 어디에서나 갈 수 있도록 고군분투하고 있습니다. (단순화 된) 데이터베이스 구조는 다음과 같습니다.

Person                Alias
------                ------
                      A_ID
P_ID ---------------< P_ID
P_FIRST_NAME          A_FIRST_NAME
P_SURNAME             A_SURNAME

따라서 각 사람은 0 또는 많은 별칭을 가질 수 있습니다. 내가하려고하는 것은 사용자가 이름을 검색하고 사람 테이블에서 사람이나 별명 테이블에서 그 이름과 일치하는 사람 테이블에서 행을 되 찾을 수 있도록 허용하는 것입니다. 지금까지 나는 다음과 같습니다.

        var peopleQuery = MainFrm.genesisContext.People.AsExpandable();
        var peoplePredicate = PredicateBuilder.True<Person>();

        var aliasQuery = MainFrm.genesisContext.Alias.AsExpandable();
        var aliasPredicate = PredicateBuilder.False<Alias>();

        if (!String.IsNullOrEmpty(txtFirstName.Text.Trim()))
        {
            peoplePredicate = peoplePredicate.And(p => p.P_FIRST_NAME == txtFirstName.Text);

            aliasPredicate = aliasPredicate.And(a => a.A_FIRST_NAME == txtFirstName.Text);

            peoplePredicate = peoplePredicate .Or(p => aliasPredicate);
        }

사람들에서 별칭으로 변환하려고하기 때문에 이것은 작동하지 않습니다. 기본적으로 나는 완전히 붙어 있었고 두 개의 다른 테이블에서 또는 쿼리를 할 수 있는지 확실하지 않습니다 (?)

도움이 되었습니까?

해결책

몇 가지 가능한 해결책을 생각할 수 있습니다.

  1. 별칭 테이블에 각 사람의 기본 이름을 포함시키고 별칭 테이블에서 검색하거나
  2. 검색 전에 두 테이블을 함께 통합하거나
  3. OUTER가 별명 테이블에 Person 테이블에 연결되는 LINQ 쿼리를 실행하고 귀하의 또는 조건을 포함하여 검색에서 결과를 사용하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top