Запрос службы данных WCF, по-видимому, возвращает повторяющиеся строки при повторных запросах - PullRequest
1 голос
/ 09 августа 2010

У меня есть класс данных, который возвращает некоторые объекты из службы данных wcf в приложение silverlight:

void ExecuteWipReportQuery (DataServiceQuery qry) { context = new StaffKpiServices.HwfStaffKpiEntities (theServiceRoot); qry.BeginExecute (новый AsyncCallback (a => { пытаться { IEnumerable results = qry.EndExecute (a); OnDataLoadingComplete (новый WipReportByMonthEventArgs (результаты)); } поймать (исключение ex) { OnDataLoadingError (ех); } }), ноль); }

Затем модель представления получает эти результаты и добавляет их в наблюдаемую коллекцию:

void wipReportDataContainer_DataLoadingComplete (отправитель объекта, Domain.WipReportByMonthEventArgs e) { Application.Current.RootVisual.Dispatcher.BeginInvoke (() => { this.wipReport.Clear (); строка s = "";

          foreach (StaffKpiServices.WipReportByMonth r in e.Results)
          {
              //this.wipReport.Add(r);
              //s += r.ClientCode;
              this.wipReport.Add(new StaffKpiServices.WipReportByMonth
              {
                  ClientCode = r.ClientCode,
                  ClientGroup = r.ClientGroup,
                  ClientName = r.ClientName,
                  ClientType = r.ClientType,
                  FinancialYear = r.FinancialYear,
                  Month = r.Month,
                  OSDebt = r.OSDebt,
                  OSDisb = r.OSDisb,
                  OSOther = r.OSOther,
                  OSTime = r.OSTime,
                  OSTotal = r.OSTotal,
                  PartnerUserName = r.PartnerUserName,
                  PracName = r.PracName,
                  Recov = r.Recov,
                  RecovFees = r.RecovFees,
                  RecPerc = r.RecPerc,
                  SicCode = r.SicCode,
                  SicParentName = r.SicParentName,
                  StaffName = r.StaffName,
                  YTDFees = r.YTDFees,
                  YTDTime = r.YTDTime
              });

              s += r.ClientCode + " ";

          }
          string s2 = "";
          foreach (var p in this.wipReport)
          {
              s2 += p.ClientCode + " ";
          }
          OnPropertyChanged("WipReport");
          if (null != LoadComplete)
          {
              LoadComplete(this, EventArgs.Empty);

          }
      });
    }

Все работает нормально, но если данные обновляются два или три раза, тогда повторный запуск коллекций содержит правильное количество объектов, но все с дублирующимися свойствами. Кажется, нет никаких причин, почему, как будто foreach не работает над коллекцией, но в то же время не возвращает никаких ошибок. Есть идеи?

1 Ответ

1 голос
/ 01 декабря 2010

Хорошо, так что это было странно ... но при воссоздании объекта, который извлекает данные (тот, который создает контекст), все было в порядке, но если viewmodel оставил в живых объект, ответственный за выполнение запроса к службе данных, возникла проблема.....

Я понятия не имею, почему это должно было быть, но проблема ушла .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...