2012-04-12 61 views
0

我正在使用.NET 3.5,並且無法自動加載實體引用。理想情況下,它似乎有時工作,我想像實體引用無法隱式加載?

Dim relocations = ctx.EmployeeRelocations.Where(Function(o) o.Employee.EmployeeNumber = employeeNumber).ToList() 
If Not relocations.Where(Function(o) o.ValidTerritory.Territory = territory).Any() Then 

其中ValidTerritory是重定位中的引用類型。但是,當我嘗試這樣做時,我將對象未設置爲o.ValidTerritory的實例...。所以,我可以做到這一點,一切工作正常:

If Not relocations.Where(Function(o) 
          o.ValidTerritoryReference.Load() 
          Return o.ValidTerritory.Territory = territory 
         End Function).Any() Then 

從理論上講,這是有道理髮生了什麼,但我不明白爲什麼我需要明確的負載,以及爲什麼這種行爲似乎來來去去(即是,它有時加載引用很好,沒有明確的負載)。

回答

1

嘗試使用Include來獲取數據:

relocations.Include("ValidTerritory").Where(Function(o) o.ValidTerritory.Territory = territory).Any() 
+0

我得到了「包括」不「System.Collections.Generic.List(中... EmployeeRelocation)」,其中重定位定義'昏暗的成員relocations = ctx.EmployeeRelocations.Where(Function(o)o.Employee.EmployeeNumber = employeeNumber).ToList()'另外請注意挖入這裏的Employee引用很好...... – mafafu 2012-04-13 11:21:43

+0

'.include'必須直接進行在'context.Table'元素上,所以在你的例子中它會是'ctx.EmployeeRelocations.Include(「ValidTerritory」)'。 – MarcinJuraszek 2012-04-13 11:37:50

+0

這擺脫了錯誤,但導致我的查詢進一步的問題。它也使這個陳述比它看起來更爲複雜,因爲這種類型的陳述在其他地方起作用。我不認爲我可以將此標記爲已接受,因爲潛在問題仍然存在,但+1幫助。 – mafafu 2012-04-13 11:52:11