1

내 쿼리에 클라이언트의 하위 엔터티를 포함시킬 가능성이 있습니까? 저는 데이터베이스 액세스를 위해 RIA Services, DomainService 및 EntityFramework를 사용하여 Silverlight 응용 프로그램을 작성하고 있습니다. 데이터에 대해 DomainService를 호출 할 때 관련 엔티티를 가져 오려면 DomainService의 [Include] 특성으로 DomainService의 메타 데이터를 수정하고 Include() 메서드를 사용해야합니다. (예를 들어 ObjectContext.Parent.Include ("아동"))DomainService : 클라이언트의 .Include()

는 그러나, 나는, 관련 데이터의 모든 다른 조합을 얻을 내 DomainService의 각 개체에 대한 방법의 톤과 함께 끝나는 것 같은 느낌 때문에 나는 때때로 '일부 RIA 자습서에 따르면 ...

때때로 나는 단지 등 모든 관련 데이터하지 않고 사용자를 얻을 싶어하는 사용자 및 관련 역할 필요 것이다, 주어진 기능을 사용하는 것이 좋습니다 식 트리를 사용하여 클라이언트 쪽에서 쿼리를 수정합니다. DomainService 'get-method 대신 클라이언트에 포함 할 방법이 있습니까? DomanServices와 함께 작업 할 때 공통적 인 문제라고 생각합니다.

내 연구 중에 비슷한 질문이 있었지만 어떤 대답도없고 누군가가 말한 다른 스레드도 발견되지 않았다. 그러나 그 대답은 2009 년 4 월경에 게시되었으며 이후 개발에 많은 변화가있었습니다.

감사

답변

0

당신은 서버에 방법을 조회 할 수 있습니다. 당신은 서버에이 코드가 있다고 가정 해 봅시다 :

public IQueryable<Employee> GetEmployeesSorted() 
{ 
    return from Employee emp in ObjectContext.Employees 
    orderby emp.Title, emp.HireDate 
    select emp; 
} 

당신이 도움이 될 것입니다

EmployeeContext context = new EmployeeContext(); 

    EntityQuery<Employee> query = 
     from emp in context.GetEmployeesSortedQuery() 
     where emp.SalariedFlag == true 
     select emp; 

희망 클라이언트에서 다음과 같이 사용할 수 있습니다.

+0

정말로 빠른 답변을 보내 주셔서 감사합니다. 나는 그것에 대해 알고 있지만 관련 엔터티를 조인하는 Include() 메서드는 DomainService의 ObjectQuery 중 하나만 직접 작동합니다. 요점은 DomainService 코드를 많이 변경하고 싶지 않다는 것입니다. 가장 좋은 방법은 생성 된 코드를 고수하고 쿼리 클라이언트 측에서 모든 작업을 수정하는 것입니다. – Christoph

+0

@Christoph -'.Include'의 요점은 서버에서 데이터를 열망하는 것입니다. 도메인 서비스를 호출 할 때 포함시킬 배열을 수락하는 것이 좋다고 생각합니다. 그런 다음 서비스는 열심히로드 할 수 있습니다. 예 : var empsWithOrders = domainService.GetEmployees (new [] { "Orders", "Orders.Products"})'. 도메인 서비스의 확장 메소드를 사용하여'.Include'로 변환하십시오. 열거 형 또는 복잡한 제네릭 (나) 후자를 사용하여 더 많은 형식 - 안전하게 만들 수 있습니다. – RPM1984

+0

좋아, 내가 직접 내 전화를 통해 클라이언트에 포함 할 수 없기 때문에, 이것은 나에게 좋은 해결 방법처럼 보인다. 아이디어를 제공해 주셔서 감사합니다. – Christoph