2012-11-30 32 views
2

我有一個MSSQL storedproc,我通過EF4通過上下文執行。這導致IEnumerable<T>,它返回並反序列化SP的所有結果。急切加載的一些導航屬性

的問題是,我想要做一些導航性能的渴望加載。

調用.AsQueryable().Include("Navigation_Property_Path").ToArray()沒有幫助。

有什麼辦法已經在上下文實體的渴望負荷導航性能?

我真的不想改變我的SP,返回我的實體的ID(基本上是int數組),然後使用WHERE的ID在EF.Context上執行選擇,然後使用Include。

回答

0

沒有,因爲SP調用是不是在SQL級別可組合。 EF不支持急切的加載。

也許你可以從一個SP切換到內聯TVF?

+0

請您詳細說明「內聯TableValuedFunction」選項嗎?也不可能爲已經在上下文/結果中的實體加載導航屬性嗎? – Csabi

+0

@Csabi您可以將一個TVF導入EF並在查詢中使用它,就像它是一張表一樣。這使您可以撰寫更復雜的查詢,包括包含。 YOu可以加載導航屬性,但這是一種不同的機制。它會在你的情況下工作,但效率不高(選擇n + 1)。 – usr

+0

有趣的事情我的SP調用TVF,這樣我就可以使用TVF ...如果我升級到EF5,我不知道我是否可以馬上跳:/ 無論如何,THX的答覆,我作爲紀念回答。 – Csabi