Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов WCF в цикле 
V
    Опции темы
kinder999
Дата 29.7.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 11.6.2007

Репутация: нет
Всего: нет



Здравствуйте. Сложилось следующая ситуация.
Есть приложение на silverlight и БД.  Данные из БД я получаю с помощью WCF Services.

Есть код, который получает информацию из БД по одной строке (по конкретному ID):
Код

void GetFullData()
        {
            // Создаём объект сервис клиента
            eLService.eLDBServiceClient ws = new elPlayer.eLService.eLDBServiceClient();
            // Добавляем события
            ws.GetQuestionInfoCompleted += new EventHandler<elPlayer.eLService.GetQuestionInfoCompletedEventArgs>(ws_GetQuestionInfoCompletedFD);
            // Вызываем асинхронно
            ws.GetQuestionInfoAsync(qID);
        }

 void ws_GetQuestionInfoCompletedFD(object sender, elPlayer.eLService.GetQuestionInfoCompletedEventArgs e)
        {
            string[] QText = e.Result.Select(d => d.TextQ).ToArray();
            string[] IsPic = e.Result.Select(d => d.isP.ToString()).ToArray();
            string[] TypeAnswer = e.Result.Select(d => d.type_a.ToString()).ToArray();

           /// и т.д....
        }


Код WCF Services
Код

#region GetTestInfo(testID)
        [OperationContract]        
        List<Test_inf> GetTestInfo(int testID)
        {
            DCeLearningDataContext db = new DCeLearningDataContext();
            var result = from TestInfo in db.Test_infs
                         where TestInfo.idT == testID
                         select TestInfo;
            return result.ToList();
        }
        #endregion


У меня есть массив (ListQ), с ID строк из бд. Я хочу получить все эти строки:
Код

for (int i = 0; i < ListQ.Length; i++)
            {
                GetFullData(ListQ[i]);
            }

Но почему-то происходит обращение к БД только один раз и берётся только одна строка.
Подскажите, пожалуйста, как решить проблему.
Или может быть есть способ с помощью WCF Services получить несколько строк имея список ID?
Заранее спасибо за помощь...

Это сообщение отредактировал(а) kinder999 - 29.7.2010, 17:04
PM MAIL   Вверх
-Mikle-
Дата 30.7.2010, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 1
Всего: 59



Цитата(kinder999 @  29.7.2010,  19:51 Найти цитируемый пост)
Или может быть есть способ с помощью WCF Services получить несколько строк имея список ID?

Ну так сделай соответствующий метод сервиса, который принимает массив ID.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
kinder999
Дата 30.7.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 11.6.2007

Репутация: нет
Всего: нет



Цитата(-Mikle- @  30.7.2010,  08:25 Найти цитируемый пост)
Ну так сделай соответствующий метод сервиса, который принимает массив ID. 

А можно пример, если не сложно?  smile 
PM MAIL   Вверх
KelTron
Дата 30.7.2010, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



Элементарно, Ватсон..)
Код

List<Test_inf> GetTestInfo(int[] testIDs)
        {
            DCeLearningDataContext db = new DCeLearningDataContext();
            var result = from TestInfo in db.Test_infs
                         where  testIDs.Contains(TestInfo.idT)
                         select TestInfo;
            return result.ToList();
        }



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
kinder999
Дата 30.7.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 11.6.2007

Репутация: нет
Всего: нет



Сделал метод
Код

#region GetAllQuestionInfo(ListQ)
        [OperationContract]
        List<Question> GetAllQuestionInfo(int[] ListQ)
        {
            DCeLearningDataContext db = new DCeLearningDataContext();
            var result = from QData in db.Questions
                         where ListQ.Contains(QData.ID)
                         select QData;
            return result.ToList();
        }
        #endregion

пытаюсь вызвать 
Код

// Создаём объект сервис клиента
            eLService.eLDBServiceClient ws = new elPlayer.eLService.eLDBServiceClient();
            // Добавляем события
            ws.GetAllQuestionInfoCompleted += new EventHandler<elPlayer.eLService.GetAllQuestionInfoCompletedEventArgs>(ws_GetAllQuestionInfoCompletedFD);
            // Вызываем асинхронно
            ws.GetAllQuestionInfoAsync(ListQ);

Где ListQ имеет тип int[]

получаю ошибку
Код

Error    1    The best overloaded method match for 'elPlayer.eLService.eLDBServiceClient.GetAllQuestionInfoAsync(System.Collections.ObjectModel.ObservableCollection<int>)' has some invalid arguments

Error    2    Argument '1': cannot convert from 'int[]' to 'System.Collections.ObjectModel.ObservableCollection<int>'

В чём может быть проблема?  smile 
PM MAIL   Вверх
kinder999
Дата 2.8.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 11.6.2007

Репутация: нет
Всего: нет



проблема решена методом вывода данных не сразу, а в цикле...
Всем спасибо за советы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.