Службы RIA: процесс сервера возвращает несколько объектов, но клиент показывает, что 1 объект дублирован

Я столкнулся с проблемой, когда RIA Services возвращает 3 объекта с сервера (я проверил при отладке серверного процесса и подтвердил через Fiddler, что служба возвращает 3 объекта.

Я использую MVVM, поэтому вызываю Load на стороне клиента, используя вспомогательную функцию, которую я позаимствовал из образца Шона Вильдермута: Вот этот код:

    // Generic query handling
     protected void PerformQuery<T>(DomainContext dc, string name, EntityQuery<T> qry, EventHandler<EntityResultsArgs<T>> evt) where T : Entity
    {
        dc.Load<T>(qry,(r) =>
        {
            if (evt != null)
            {
                try
                {
                    if (r.HasError)
                    {
                        evt(this, new EntityResultsArgs<T>(r.Error));
                    }
                    else if (r.Entities.Count() > 0)
                    {
                        evt(this, new EntityResultsArgs<T>(r.Entities));
                    }
                }
                catch (Exception ex)
                {
                    evt(this, new EntityResultsArgs<T>(ex));
                }
            }
        }, null);
    }

EntityResultsArgs - это простой класс, который предоставляет свойство исключения (называемое Error) и свойство Results (содержащее результаты, если они есть).

На сервере мы сопоставляем результат с помощью AutoMapper с нашими открытыми классами домена, и этот конкретный вызов службы возвращает IEnumerable.

Что мне не хватает (или что еще может помочь кому-то понять это).

Спасибо!


person DevTheo    schedule 17.09.2010    source источник
comment
Проверьте свое определение PK и убедитесь, что службы RIA знают, какой столбец является уникальным.   -  person Craig Stuntz    schedule 17.09.2010
comment
Кстати, когда я установил точку останова на evt (это новый EntityResultsArgs ‹T› (r.Entities)); line Я получаю 3 результата, все дубли. Если я установил точку останова в свойстве имени объекта, сгенерированного службами RIA, я увижу, что все данные будут установлены .. (но я получаю 3 дубликата вместо 3 отдельных записей)   -  person DevTheo    schedule 17.09.2010
comment
Ключевой атрибут установлен в правильном поле   -  person DevTheo    schedule 17.09.2010
comment
Но я думаю, у вас есть правильная идея ... Только что мой коллега (автор службы) проверил, правильно ли AutoMapper устанавливает ключ ... не уверен, что это так.   -  person DevTheo    schedule 17.09.2010


Ответы (1)


Да, проблема подтверждена. Я получал 3 объекта обратно из службы с идентификатором (также известным как значение «[Key]»), равным 0.

person DevTheo    schedule 20.09.2010