Show Progressbar When Loading Data Using EntityFrameWork In WPF
I want to show the progress of Data being fetched from Database in a Progressbar. Currently i am updating the content of a Button. Have no idea how to implement in this code . priv
Solution 1:
You won't be able to show the percentage of an EF-Query, as it doesn't notify you about the progress of the DB query (I don't know any DB-System that keeps the client informed about the status of a query)
You could consider splitting your query into pieces like this:
private async void FetchInvoicesDataFunc(object sender, RoutedEventArgs e)
{
List<Invoice> results = new List<Invoice>();
ProgressBtn.Content = "Loading Data ...";
await Task.Run(async() => results.AddRange(await FetchInvoiceDataAsync(0, 500));
ProgressBtn.Content = "25% done...";
await Task.Run(async() => results.AddRange(await FetchInvoiceDataAsync(501, 1000));
ProgressBtn.Content = "50% done...";
await Task.Run(async() => results.AddRange(await FetchInvoiceDataAsync(1001, 1500));
ProgressBtn.Content = "75% done...";
await Task.Run(async() => results.AddRange(await FetchInvoiceDataAsync(1501, 2000));
InvoiceGrid.ItemsSource = results;
ProgressBtn.Content = "Loaded !";
}
private async Task<List<Invoice>> FetchInvoiceDataAsync(int start, int end)
{
List<Invoice> result;
using(var context = new Intelliventory_DBEntities() )
{
result = await context.Invoices.Where(b => b.InvoiceID >= start && b.InvoiceID <= end).Include(x => x.Customer).ToListAsync();
}
return result;
}
Please note that this will have a negative impact on the performance of your application. There are thousands of tutorials how to use progressbars both in WinForms and WPF so i won't dive into that topic.
Post a Comment for "Show Progressbar When Loading Data Using EntityFrameWork In WPF"