实体框架可导航属性未设置为对象实例?

时间:2012-03-21 18:08:54

标签: asp.net vb.net entity-framework entity-framework-4.1

我有以下查询:

 Dim queryStudent = (From p In dbContext.Residents _
                     Where p.people_code_id = people_id _
                     Where p.year = year _
                     Where p.semester = semester _
                     Join b In dbContext.Buildings On p.building Equals b.id _
                     Join r In dbContext.Rooms On p.room Equals r.id
                     Select p, b, r)

然后我试图像这样拉动建筑物和房间:

room = queryStudent.FirstOrDefault.r.id
building = queryStudent.FirstOrDefault.b.id

但我收到Object reference not set to an instance of an object错误。

我尝试过像

这样的事情
 If IsNothing(queryStudent.FirstOrDefault.r.id) Then  
     room = ""
 Else     
     room = queryStudent.FirstOrDefault.r.id
 End If

但是仍然会产生相同的错误。

2 个答案:

答案 0 :(得分:1)

检查r是否为空而不是r的<。

 If IsNothing(queryStudent.FirstOrDefault.r) Then   
     room = "" 
 Else      
     room = queryStudent.FirstOrDefault.r.id 
 End If 

答案 1 :(得分:1)

我怀疑queryStudent.FirstOrDefault为null。如果您尝试访问null对象的属性,则会获得该异常。试试这种方法:

If IsNothing(queryStudent.FirstOrDefault) Then  
     room = ""
Else If IsNothing(queryStudent.First.r) Then
    room = ""
Else     
     room = queryStudent.FirstOrDefault.r.id
End If

在每种情况下,您都在检查您要访问的对象是否为空。

相关问题