Generic Repository에 IncludeFilter 포함


문제

또한 필터가 필요합니다. 모든 테이블에 레코드 상태가 있습니다. 그래서 나는 이것을 기반으로 레코드를 필터링해야합니다. 이 문제를 해결하기 위해 Z.EntityFramework.PlusIncludeFilter 메서드를 사용하고 있습니다.

내 일반적인 데이터 코드는 다음과 같습니다.

    public async Task<T> GetAsync(int id, params Expression<Func<T, object>>[] includes)
    {
        var query = _context.Set<T>().AsQueryable(); //.FindAsync(id);

        if (includes.Length > 0)
        {
            query = includes.Aggregate(query,
              (current, include) => current.IncludeFilter(include));
        }
        var item = await query.FirstOrDefaultAsync(x => x.Id == id);
        return item;
    }

내가 호출하는 메소드 (비즈니스 클래스)의 상태가 정상적으로 작동 할 때를 포함 할 때. 그러나 나는 모든 곳에이 조건을 포함시키고 싶지 않습니다. 그래서 내가 어디에이 조건을 포함하도록이 방법을 변경해야합니다.

제발 도와주세요. 내 포함 매개 변수에서 확장이 어디에도 없었습니다.

참고 : 각 포함 조건에 where를 포함해야합니다.

인기 답변

이론 상으로는 모든 엔티티 유형이 RecordStatus 속성을 가진 인터페이스 ( IRecord ?)를 구현할 수 있습니다.

그런 다음 Expression<Func<T, IRecord>>[] 매개 변수를 Expression<Func<T, IRecord>>[] 변경할 수 있습니다.

까다로운 부분은 당신이 주어진 것에 기초하여 새로운 include 식을 생성하고 && r.RecordStatus == "whatever" 를 각각에 추가하는 것입니다. 이런 식으로하는 코드는 약간 못 생길 수 있지만 가능해야합니다.





아래 라이선스: CC-BY-SA
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.