linq Where 절에서 사용할 식을 생성하는 함수가 있습니다. Expression <Func<T,bool>> 제네릭 메서드에서 생성 될 때 원하지 않는 변환을 추가합니다.
public static Expression<Func<T,bool>> GetWhereCondition<T>() where T : IActive
{
return x => x.Active;
}
은 (IACTIVE은 '활성'속성을 정의 참고)
가 다른 관련 기능을하고 아이디어가 나는 등 비즈니스 규칙,
을 제어하는 일반 클래스에 필요한 조건을 삽입 할 수 있다는 것입니다x => Convert(x).Active
코스 REJ이다 :
문제는 내가이 프로그램을 실행할 때, 반환 된 표현식 (디버거에서 보았을 때) 람다가 포함되어 있습니다 linq : 'LINQ to Entities는 캐스팅 엔터티 데이터 모델 기본 형식 만 지원합니다.'
내 질문은 ...
이 동작을 어떻게 막을 수 있습니까? 전환 할 필요가 없으며 분명히 바람직하지 않습니다. 이것을 막을 수 있습니까?
아, 흥미 롭다. 근본적인 차이점은 "제한된"것 "callvirt"사이의 변화입니다; 이것이 이것이 작동하게하는 것은 흥미 롭다. –