Пустая ссылка исключение в сущности навигации - PullRequest
0 голосов
/ 23 августа 2010

У меня следующая структура EF:

alt text

Я хочу получить имя каждого пользователя, посетившего собрание:

using(var ctx = new MyContext())
{
    var meeting = (from row in ctx.Meetings.Include("MeetingMessages").Include("MeetingUsers")
            where row.mId == 1
            select row).FirstOrDefault();

    foreach(var meetingUser in meeting.MeetingUsers)
    {
        MessageBox.Show(meetingUser.User.Name); //<== exception
    }
}

Iполучаю NullReferenceException в meetingUser.User.Name строке, потому что meetingUser.User экземпляр равен нулю.Я не могу добавить .Include() к Meeting, потому что между ними нет никаких отношений.Есть ли способ загрузить его, не делая meetingUser.UserReference.Load() в foreach?

1 Ответ

0 голосов
/ 23 августа 2010

Один из способов - проецировать:

using(var ctx = new MyContext())
{
    var meeting = (from row in ctx.Meetings
                   where row.mId == 1
                   select new
                   {
                       Meeting = row,
                       MeetingUsers = row.MeetingUsers,
                       Users = from u in row.MeetingUsers
                               select u.User
                   }).First();

    foreach(var meetingUser in meeting.MeetingUsers)
    {
        MessageBox.Show(meetingUser.User.Name); //<== exception
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...