2012-07-21 137 views
2

我有一個ASP.NET MVC應用程序使用EF 4.1與Poco類。實體框架4.1 Poco類避免多個數據庫往返

當我得到多個實體,如:

var users = db.Users.Where(u=>u.IsActive).ToList(); 
var transactions = db.Transactions.Where(t=>t.IsActive).ToList(); 
var customers = db.Customers.Where(c=>c.IsActive).ToList(); 

在這種情況下數據庫被擊中3次?如果有的話,是否有什麼辦法可以強制EF 4.1只需一次往返?

我在問這個,因爲我有一個函數,必須得到像14個實體和更新其他17個。所以很高興知道這是如何在幕後工作。

+0

這三個實體之間的關係是什麼?您可以通過查看爲每個導航屬性創建的導航屬性進行檢查。 – Chris 2012-07-21 15:09:21

+0

他們之間沒有關係。是單獨的目錄。我讀到EF 5將通過調用存儲過程來支持多個實體,所以這將非常棒,因爲您可以創建一個獲得5個表格的SP,並且EF 5將使用模型映射每個表格。但現在我認爲它不可能。 – VAAA 2012-07-21 16:39:24

回答

0

在這種情況下,由於沒有關係並且涉及多個表格,所以在使用EF 4.1時必須進行多次行程。這是因爲沒有辦法在這些表之間提供某種JOIN來合併多個SQL語句。儘管必須進行多次行程,但通過在保持相同環境(如果可能)的情況下在DbSets之間切換,在一個連接下執行每次行程仍然是相對無痛的。