2013-08-17 29 views
0

我想執行一個選擇基於一個實體與另一個實體作爲外鍵關係。LINQ代碼 - 首先選擇使用複合外鍵

我在我的測試中得到了對象,它們是正確的對象,但由於某種原因我在Asserts中失敗。有時相關的實體被加載,有時不是。

的LINQ代碼如下所示:

var toDoList = _dbSet.Where(s => Context.ToDos.Where(std => std.UserId == userId && std.Id == s.Id).Any()).AsEnumerable(); 

待辦列表包含了我從_dbSet選擇實體的ID。我想知道這是否與延遲加載或LINQ問題有關。我怎樣才能可靠地獲得相關的實體加載?

+1

我很懷疑保持對dbset作爲類成員的引用。你爲什麼需要這樣做?爲什麼不引用你的上下文來獲得它? –

+0

可能是相關的:AsEnumerable不會像ToList或ToArray那樣執行查詢 - 它只是將其轉換爲IEnumerable,但執行被推遲直到它被迭代。 –

+0

是的,我意識到,只要我發佈這個並修改我的代碼。我現在立即調用AutoMapper,以便在該過程中初始化所有屬性。 – Jammer

回答

0

您可以通過使用包含來加載相關的實體。

_dbSet.ToDos.Where(std => ...).Include(std => std.NavigationProperty) 
    .AsEnumerable(); 

你可以看到這msdn文章的更多信息。

相關問題