我有一個項目使用Entity Framework
中的數據並將其顯示在WPF
中。當Entity Framework在表示層加載/保存數據時,我想要顯示線程進度條。實體框架傳輸數據時顯示進度條
你能幫我理解我該怎麼做嗎?
我有一個項目使用Entity Framework
中的數據並將其顯示在WPF
中。當Entity Framework在表示層加載/保存數據時,我想要顯示線程進度條。實體框架傳輸數據時顯示進度條
你能幫我理解我該怎麼做嗎?
您可以使用Dispatcher Thread來實現此目的;基本上你需要創建一個在其他UI類中擴展的公共類。
要達到此目的,您可以在此處看到basic example;更精確的示例和可下載的代碼可用here。
我發現這個整潔的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...
}
它是它似乎是唯一的選擇,但對於記錄來說,跳過是低效率的(sql dbs無法在rowcounts上查找)。實體框架真的應該有這方面的支持。大量出口需要這個。 – John
EF不提供一種機制來通知進度。 – Eranga
一般來說,提交給EF的速度應該足夠快,以至於他們不需要進度條,如果您發現花費一段時間您的時間將會更好地花在修復根本原因上,而不是提供用戶對提交進度的反饋 –