Silverlight 3 с RIA Services - пустые результирующие наборы / загрузка завершена - PullRequest
0 голосов
/ 20 февраля 2010

На прошлой неделе я отчаянно пытался выяснить, в чем состоит мое разъединение, в том, что я не могу обернуться вокруг RIA Services. Я тщательно следовал примеру, показанному в учебном видео Microsoft , и у меня все еще есть проблемы. Может быть, я пытаюсь сделать то, что вы не можете, но, по всей вероятности, я просто делаю это неправильно.

В обучении они используют код, очень похожий на:

IVCContext ctx = new IVCContext();
MyDataGrid.ItemsSource = ctx.ChairOptions;
ctx.Load(ctx.GetChairOptionsQuery());

Заполняет DataGrid информацией, которую находит в таблице ChairOptions.

Но я хотел бы иметь прямой доступ к результатам, не привязывая их к DataGrid или любому другому элементу управления в этом отношении. Я хотел бы просто получить набор результатов, а затем работать с ним, как мне угодно.

Более конкретно, я хотел бы взглянуть на его свойства (имя, стоимость и т. Д.) И отношения (группа, подгруппа), которые прикреплены к нему в модели, чтобы я мог выполнять специальные действия и изменять содержимое. контроля. Но кажется, что независимо от того, что я пытаюсь, я получаю пустой набор результатов.

Я пробовал что-то вроде:

LocalContext ctx = new LocalContext();
var ResultSet = ctx.ChairOptions;
ctx.Load(ctx.GetChairOptionsQuery());

Но ResultSet всегда пуст.

Мне кажется, что одна из причин, по которой я не могу понять это, заключается в том, что я не могу точно определить, что происходит в задании в строке # 2, и что на самом деле делает функция Load () строка № 3. В первом примере это просто работает автоматически, но мне бы очень хотелось понять, что происходит.

Заранее спасибо за любую помощь или ссылки.


Edit:

Сегодня утром меня просто поразило, когда я проснулся, в чем может быть проблема. Хотя код делает его очень простым и процедурным, вызов Load на самом деле асинхронный, верно?

Если это правильно, то возникает вопрос: откуда мне знать, когда он закончится, чтобы я мог оперировать результатами?


Edit:

Дополнительные поиски с этой новой информацией привели меня к этой информации о прикреплении обратных вызовов к отдельным операциям загрузки. Но класс, предоставленный в этой ссылке, использует объект с именем LoadOperation, и хотя кажется, что LoadOperation находится в пространстве имен System.Windows.Ria, добавление его использования не позволяет Visual Studio распознавать ссылки на LoadOperation как объект, поэтому Я не могу построить проект с этим классом.

1 Ответ

0 голосов
/ 20 февраля 2010

Этот класс в основном решает проблему. Это позволяет вам указать обратный вызов, который будет выполнен после завершения операции загрузки (а также позволит запланировать несколько загрузок одновременно). Как только был вызван обратный вызов, нужные мне данные были доступны, и я мог работать с ними, как пожелал.

...