2011-10-19 2 views
0

Silverlight 4 RIA 서비스 응용 프로그램에 하위 컬렉션 깊이가있는 스프링클러가 있습니다. Sprinkler와 Depth는 하나의 Sprinkler에 많은 Depth가있는 SQL 데이터베이스의 두 테이블입니다.Silverlight 자식 데이터가 쿼리에서 검색되었지만 OnLoadCompleted 메서드에서는 사용할 수 없습니다.

나는 따라서, 클래스에서 쿼리를 호출

Context.GetRunsForSelectedSprinkler(currentSprinkler.CurrentSprinkler, OnLoadListCompleted, null); 

내가 같은 클래스에서 쿼리의 결과를 액세스하는 방법은 다음과 같습니다

private void OnLoadListCompleted(InvokeOperation<IEnumerable<Sprinkler>> invOp) 
{ 

    IEnumerable<Sprinkler> testRuns = invOp.Value; 

} 

DomainService에서 내 쿼리가

입니다
[Invoke] 

public IEnumerable<Sprinkler> GetRunsForSelectedSprinkler(string selectedSprinkler) 
{ 

//   this.ObjectContext.ContextOptions.LazyLoadingEnabled = true; 

    var sprinklers = (this.ObjectContext.Sprinklers.Include("Depths").Where(c => c.Sprinkler1 == selectedSprinkler)); 

    return sprinklers; 

} 

디버그를 사용하여 발견 한 것은이 쿼리 내에서 GetRunsForSelectedSprinkler의 Depths collecti 스프링클러의 각 스프링클러에 대해 제대로 채워집니다. 그러나이 쿼리의 결과를받는 OnLoadListCompleted 메서드에서 Sprinkler 테이블의 스프링클러 데이터가 있지만 (Include ("Depths")로 인해 쿼리에서 채워진 Depths 자식 컬렉션이 존재하지 않음) Depths는 null입니다. 어떻게 든이 Depths 컬렉션은 반환 과정에서 손실되었습니다.

아무도 내가 이것을 고칠 수있는 방법을 알고 있습니까?

나는 Google을 광범위하게 사용하고 있으며 쿼리가 올바르다 고 생각하지만 하위 컬렉션을 반환하지 않은 것에 대해서는 찾을 수 없습니다.

메타 데이터에 Depths 컬렉션에 [포함]을 넣으려고했으나 효과가 없습니다. 또한 this.ObjectContext.ContextOptions.LazyLoadingEnabled = true; 을 설정하려고 시도했지만 효과가 없습니다. 쿼리가 올바르게 실행되었지만 결과가 OnLoadListCompleted에 올바르게 반환되지 않고 어떻게 든 관련 자식 데이터가 손실됩니다.

답변

0

결국 올바른 키워드를 추측하면 Google이 올바른 답을 얻을 수 있으며 이제 내 자신의 질문에 답변 할 수 있습니다. 내 문제와 자식 컬렉션 제대로 반환 된 해결

http://silverlightguy.com/2010/07/23/trick-for-solving-wcf-ria-services-issue/

:이 페이지에 대한 조언을 따랐다.

발견하기 어려운 경우 라하더라도 RIA 서비스에서 알려진 문제 인 것으로 보입니다. 그리고 나는 또한이 페이지를 발견 :

InvokeOperation entities become null

을하고 내 대신 호출의 쿼리를 만들려고하지만,이 방법은 위의 방법은 일을 발견하기 전에 그것을 해결 완료하지 않았다, 그래서이 작품을 알고하지 않습니다 .

이 페이지에서 문제를 언급했지만 해결하지는 못했습니다. 위의 게시 된 사람들에

Silverlight 4 LoadOperation returns null

감사합니다.

관련 문제