2017-03-03 12 views
1

私は多くのアイテムをダウンロードする大きなクエリを持っています。 EFがデータのダウンロードを開始するタイミングをチェックする方法があるので、進捗状況を示すためにプログレスバーを使用することができます。下のグラフにあるように、すべての行を取得する約10秒の期間があります。これが起こっていることをユーザーに警告することができればいいと思う。Entity Frameworkでデータが取得されるかどうかを確認する方法はありますか?

graph

答えて

1

ただ、このような結果列挙する:

foreach (var item in yourQuery) { 
    // this item has arrived - update progress 
} 

をEF6クエリの一部のバージョンではデフォルトでバッファリングされていることに注意してください(しかし、彼らは私の知る限りではストリーミングされた最新バージョンでは)、そのため、バージョンのためにあなたがこれを行うために必要がある場合があります。

foreach (var item in yourQuery.AsStreaming()) { 

} 

、クエリが返されますどのように多くの項目、事前に知っておく必要があり、適切な進捗状況を報告します。それを知る唯一の方法(クエリの形式のために何らかの形でそれを知っている場合を除き)は、最初にクエリを実行することです。

var total = yourQuery.Count(); // will make DB query 
var results = new List<YourEntityType>(); 
foreach (var item in yourQuery) { 
    results.Add(item); 
    var progress = (float) results.Count/total; 
    ReportProgress(progress); 
} 
関連する問題