2012-10-29 96 views
1

我試圖用1個SQL存儲填充我的域模型和子實體請求執行。也許這是回答here。我相當肯定這是不可能的,但我雖然會把問題放在那裏找到可能的解決辦法。來自實體框架的急切加載SP

我有相當複雜的領域模型和即時尋找一個更有效的方式加載我的數據,而不是查詢客戶,然後延遲加載其子。我已經提出了一個簡單的例子,即我試圖在下面達到目的;

public class Customer{ 
    public int Id { get; set; } 
    public virtual Address Address { get; set; } 
} 

public class Address{ 
    public int Id { get; set; } 
} 

VAR的客戶= this.Database.SqlQuery <客戶>( 「EXEC SP_NAME」)

我知道EF5可以返回multiple data contexts但即時通訊希望我能解決muliple子實體。

我希望我有意義。如果沒有,我缺乏睡眠,所以很抱歉。在10小時後的時區內進行一項運動使其變得困難! (

回答

2

EF中的存儲過程不提供急切的加載,它們只能加載單一級別的實體,您可以使用鏈接文章中提到的具有多個結果集的存儲過程,但僅適用於EDMX,並且您必須執行的,而不是SqlQuery映射函數導入您也可以簡單地使用預先加載與LINQ查詢,而不是存儲過程,以避免延遲加載:

var customers = context.Set<Customer>() 
         .Include(c => c.Address) 
         .FirstOrDefault(c => c.Name == someName); 
+0

感謝拉吉斯拉夫,我認爲儘可能多的,但是我一直希望爲EF5支持多!結果集我們在那裏一半,可以找到解決此問題的解決方法?我的查詢是複雜的,所以不能用LINQ實現,因爲生成的SQL執行查詢因爲它太慢而無法執行。 – Christo

相關問題