2012-09-10 43 views
4

我有一個項目使用Entity Framework中的數據並將其顯示在WPF中。當Entity Framework在表示層加載/保存數據時,我想要顯示線程進度條。實體框架傳輸數據時顯示進度條

你能幫我理解我該怎麼做嗎?

+3

EF不提供一種機制來通知進度。 – Eranga

+2

一般來說,提交給EF的速度應該足夠快,以至於他們不需要進度條,如果您發現花費一段時間您的時間將會更好地花在修復根本原因上,而不是提供用戶對提交進度的反饋 –

回答

1

您可以使用Dispatcher Thread來實現此目的;基本上你需要創建一個在其他UI類中擴展的公共類。

要達到此目的,您可以在此處看到basic example;更精確的示例和可下載的代碼可用here

3

我發現這個整潔的example使用Skip/Take方法來做到這一點。基本上,你每輪加載x條記錄數,你在下一輪加入Skip,並根據表中所有數據的數量計算出來,這使得你可以在每一輪更新進度條。

看看這個:

List<MyDataTable> someData = new List<MyDataTable>(); 
int rowCount = dt.myDataTable.Count(); 

//TODO: <= display a progress bar here, and set max to rowCount... 

int currentRows = 0; 
while (currentRows < rowCount) 
{ 
    someData.AddRange(dt.myDataTable.Skip(currentRows).Take(10000).ToList()); 
    currentRows = someData.Count; 

    //TODO: <= update progress here... 

} 
+2

它是它似乎是唯一的選擇,但對於記錄來說,跳過是低效率的(sql dbs無法在rowcounts上查找)。實體框架真的應該有這方面的支持。大量出口需要這個。 – John