Свойства объекта выделенных объектов равны нулю - PullRequest
2 голосов
/ 17 июня 2011

У меня проблемы с Linq для структуры сущностей.

Вот мой код:

var activeScoreList = (from s in context.Score
                       join i in context.Import on s.import.importId equals i.importId
                       where i.isActive.Value == 1
                       select s).ToList();

foreach (Score s in activeScoreList)
{
    if (s.User.userId == loggedOnUserId) { // Here
        ...
    }
}

У меня есть несколько Score объектов в моей базе данных и внешний ключ UserId - это NOT NULL.
Однако, всегда имеет исключение в строке if.User свойство всегда null.

Я новичок в Linq, так что я мог где-то пропустить конфигурацию.Это нормальное поведение?Нужно ли делать новый запрос для каждой оценки, чтобы получить объект User?

1 Ответ

2 голосов
/ 17 июня 2011

Редактировать - на самом деле вам не нужен оператор соединения.Вы можете переписать запрос следующим образом:

var activeScoreList = (from s in context.Score.Include("User").Include("Import")
                       where s.Import.isActive.Value == 1
                       select s).ToList();

Вам необходимо загрузить свойство навигации пользователя.Таким образом, в вашем выражении foreach вы можете позвонить

s.UserReference.Load()

Если вы не использовали оператор join в своем запросе, вы могли бы использовать context.Score.Include("User"), однако, поскольку вы использовали join, он будет игнорировать всеInclude заявления

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