У меня есть сервисное приложение Silverlight 4 RIA с классом Sprinkler, у которого есть дочерняя коллекция Depths. Sprinkler и Depth - это две таблицы в базе данных SQL, в которых один Sprinkler имеет много глубин.
Я вызываю запрос из класса, таким образом:
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 для каждого спринклера в спринклерах заполняется правильно. Однако в методе OnLoadListCompleted, который получает результат этого запроса, хотя данные разбрызгивателя из таблицы Sprinkler есть, дочерняя коллекция Depths, которая была заполнена запросом (из-за Include ("Depths")), теперь не существует. и Глубины - ноль. Каким-то образом эта коллекция глубин была потеряна в процессе возврата.
Кто-нибудь знает, как я могу это исправить?
У меня есть Google, и я думаю, что запрос правильный, но я не могу найти ничего о невозможности возврата дочерней коллекции.
Я пытался добавить [Включить] для коллекции глубин в метаданные, но это не имеет никакого эффекта. Я также попытался установить this.ObjectContext.ContextOptions.LazyLoadingEnabled = true;
и нет, но это не имеет никакого эффекта.
Запрос выполняется правильно, но результат не возвращается правильно в OnLoadListCompleted, и он как-то теряет связанные дочерние данные.