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에 올바르게 반환되지 않고 어떻게 든 관련 자식 데이터가 손실됩니다.