【问题标题】:Null reference exception in entity navigation实体导航中的空引用异常
【发布时间】:2010-08-23 21:34:29
【问题描述】:

我有以下 EF 结构:

我想获取参加会议的每个用户的姓名:

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
    }
}

我在meetingUser.User.Name 行中得到NullReferenceException,因为meetingUser.User 实例为空。我无法将任何.Include() 添加到Meeting,因为两者之间没有关系。有没有办法在 foreach 中不做meetingUser.UserReference.Load() 的情况下加载它?

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    一种方法是投影:

    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
        }
    }
    

    【讨论】:

    • 这确实让我大开眼界。谢谢。
    猜你喜欢
    • 2018-09-13
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 2016-05-11
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多