2012-03-21 36 views
0

我有以下查詢:實體框架導航屬性未設置爲對象的實例?

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 

但仍然產生了同樣的錯誤。

回答

1

檢查r是什麼,而不是r的id。

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

我懷疑queryStudent.FirstOrDefault爲null。如果您嘗試訪問空對象的屬性,則會得到該異常。嘗試這種方法:

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

在每種情況下,您都檢查您即將訪問的對象是否爲空。