Linq Query для сложного объекта - PullRequest
0 голосов
/ 13 июня 2011

Все - у меня есть следующий набор объектов:

User { String:Name, List<Devices> }
Device {String:Name, DeviceVariationInfo }
DeviceVariationInfo { String:OS }

В базе данных эти объекты разбиты на следующиетаблицы: Пользователи, Устройства, DevieVariationsInfo, UserToDevices

Я пытаюсь запросить список устройств вместе с информацией об их вариациях для определенного пользователя и использую следующий запрос, который всегда возвращает список из 0 элементовв Devices.Я почти уверен, что делаю что-то не так .. =)

 private void GetUserDevices(ref User user)
    {
        User locUSer = user; 

        if (user != null)
        {
            var deviesQuery = from dts in _dataConext.DB_UserToDevices
                              where dts.UserId == locUSer.Id
                              join ds in _dataConext.DB_Devices on dts.DeviceID equals ds.Id
                              join dsv in _dataConext.DB_DeviceVariations on ds.Id equals dsv.DeviceId
                              select new Device
                              {
                                  Version = ds.Version,
                                  VariationInfo = new DeviceVariation
                                  {
                                      OSVersion = dsv.OS
                                  },
                                  Name = ds.FriendlyName,
                                  Id = ds.Id
                              };

            if (deviesQuery != null)
                user.Devices = deviesQuery.ToList(); 

        }

    }

1 Ответ

0 голосов
/ 15 июня 2011

Пара замечаний:

Является ли класс пользователем?Если так, почему вы передаете его в GetUserDevices по ref?Не делайте этого, если вы не хотите изменить значение этой ссылки.

Кроме того, почему вы это делаете?User locUSer = user;

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

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