Свойства навигации имеют нулевое значение при получении данных с помощью Join in Linq - PullRequest
0 голосов
/ 28 ноября 2011

Я написал следующий запрос linq для получения информации о клиенте и другой информации о клиенте от другого лица.Например:

var customers = CreateObjectSet<Customer>().Include(address =>address.Address).
                                            AsQueryable();
var OtherEntityies = CreateObjectSet<XYZ>().AsQueryable();

return (from other in OtherEntityies 
        join customer in customers
        on new { other.KeyID, other.TypeID }
        equals new { 
             KeyID = customer.CustomerID, 
             SecUserTypeID = (int)Type.CUSTOMER 
        }                     
        select new CustomerInfo {
             Customer=customer,
             Email = other.Email       
        }
       ).SingleOrDefault();

Для получения информации о клиенте я создал пользовательский класс CustomerInfo.Но проблема в том, что после использования выражения JOIN свойство навигации (address.Address) становится нулевым по сравнению с Customer, но иногда оно работает нормально.Я не могу понять проблему.Пожалуйста, помогите мне, как написать запрос, чтобы я мог получить свойство навигации с сущностью Customer после использования JOIN.

1 Ответ

0 голосов
/ 28 ноября 2011

После выполнения проекции или ручного соединения активная загрузка (Include) не выполняется.Это «особенность» (= дизайн) структуры сущностей.

Что я не понимаю, так это почему это важно?Вы выбираете только электронную почту (проецируя ее на CustomerInfo), поэтому вам не нужно, и вы никогда не получите Address.

Редактировать:

Используйте это, чтобы решить проблему:

    select new CustomerInfo {
         Customer=customer,
         Address = customer.Address,
         Email = other.Email       
    }

Вам больше не понадобится Include.

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