자주 사용되는 표현식을 linq 쿼리에서 분리하고 싶습니다. Entity Framework 4 및 LINQKit을 사용하고 있지만 올바른 방법으로 어떻게해야하는지 아직 모르겠습니다. 예를 들어 보겠습니다.Linq에서 외부 표현식을 EF4 (및 LINQKit)와 함께 사용하려면 어떻게해야합니까?
Article article = dataContainer.Articles.FirstOrDefault(a => a.Id == id);
IEnumerable<Comment> comments =
(from c in article.Comments
where CommentExpressions.IsApproved.Invoke(c)
select c);
public static class CommentExpressions
{
public static Expression<Func<Comment, bool>> IsApproved
{
get
{
return c => c.IsApproved;
}
}
}
물론 IsApproved 표현식은 훨씬 더 복잡합니다.
문제는 container.Comments의 LINQKit에서 .asExpandable()을 호출하지 않아 Invoke()가 작동하지 않지만 ObjectSet 대신 ICollection이기 때문에 호출 할 수 없다는 것입니다.
제 질문은 : 외부 표현식을 포함하고 싶을 때 항상 데이터 컨텍스트를 통과해야합니까? 아니면 가져온 개체에 어떻게 든 사용할 수 있습니까 (아티클)?
아이디어 또는 모범 사례? 대단히 감사합니다! 당신이 LinqKit이 술어 빌더를 사용하여 사용하는 것처럼 신
"container.Comments"대신 "article.Comments"를 의미합니까, 샘플 코드의 4 번째 줄에 있습니까? – jeroenh
오, 그래, 고마워, 고치다 – letmaik