2011-09-15 3 views
0

QueryBuilder 매개 변수 목록에 따르면 T 개체의 EntityQuery는 쿼리 쉐이핑의 후보가됩니다. 그러나 그렇게하려는 나의 시도는 성공적이지 못했습니다. 클라이언트에서 필터링하기 위해 T의 EntityQuery에서 ApplyTo 메서드를 사용하는 방법을 알고 있다면 궁금합니다.RIA Services QueryBuilder 사용 방법 <T>

이것은 내가 지금까지 무엇을 가지고 :

다음 코드는 특정 데이터베이스 테이블에 저장된 모든 사용자 지정 엔터티를 반환에 성공합니다.

var ctx = new CustomDomainContext(); 
var query = ctx.GetAllCustomEntitiesQuery(); 

var lo = ctx.Load<CustomEntity>(query); 
lo.Completed += (s, e) => 
{ 
    var result = lo.Entities.ToList(); 
}; 

다음 스 니펫은 RIA Services QueryBuilder를 사용하여 결과를 구분하기 위해 위에서 사용 된 쿼리를 형성하려고 시도합니다. 아쉽게도 모든 데이터가 반환됩니다.

var ctx = new CustomDomainContext(); 
var query = ctx.GetAllCustomEntitiesQuery(); 

var builder = new QueryBuilder<CustomEntity>(); 
builder.Where(c => c.Id == 1); 
builder.ApplyTo(query); 

var lo = ctx.Load<CustomEntity>(query); 
lo.Completed += (s, e) => 
{ 
    var result = lo.Entities.ToList(); --> Still returns all entities! 
}; 

틀림없이 QueryBuilder를 잘못 사용하고 있습니다. 누구든지 T의 EntityQuery에 QueryBuilder를 적용한 경험이 있습니까?

답변

0

나는 나의 실수를 깨달았다. QueryBuilder의 ApplyTo 메소드는 원래 EntityQuery를 변경하지 않고 새로운 EntityQuery를 리턴합니다. 따라서 QueryBuilder에서 반환 된 EntityQuery를 DomainContext의 Load 메서드에로드하면됩니다.

0
lo.Completed += (s, e) => 
{  
    foreach(CustomEntity item in lo.Entities) 
    { 
     list.add(item); 
    } 
};