【发布时间】:2018-12-18 23:28:31
【问题描述】:
当应用程序运行时,会运行多个查询。
现在,由于信息量增加(500 KB SQLite 数据库大小),程序运行延迟 5 秒。我应该怎么做才能更快地运行应用程序?
这是我写的代码:
public void getInitialData()
{
try
{
using (var db = new DataClass.myDbContext())
{
var query = db.Schools.ToList();
txtScCount.Text = query.Count().ToString();
var query2 = db.Users.ToList();
txtUCount.Text = query2.Count().ToString();
var query3 = db.Students.ToList();
txtStCount.Text = query3.Count().ToString();
}
}
catch (Exception)
{
}
}
private void getSchool()
{
try
{
using (var db = new DataClass.myDbContext())
{
var query = db.Schools.Select(x => x);
if (query.Any())
{
cmbEditBase.ItemsSource = query.ToList();
}
}
}
catch (Exception)
{
}
}
private void UserControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
getInitialData();
getSchool();
cmbEditBase.SelectedIndex = Convert.ToInt32(FindElement.Settings.DefaultSchool);
getTopStudent(Convert.ToInt64(cmbEditBase.SelectedValue));
try
{
using (var db = new DataClass.myDbContext())
{
long baseId = Convert.ToInt64(cmbEditBase.SelectedValue);
var query = db.Scores.Join(
db.Students,
c => c.StudentId,
v => v.Id,
(c, v) => new DataClass.DataTransferObjects.StudentsScoresDto { Id = c.Id, BaseId = v.BaseId, StudentId = v.Id, Name = v.Name, LName = v.LName, FName = v.FName, Scores = c.Scores }
).Where(y => y.BaseId == baseId).ToList();
}
}
【问题讨论】:
-
您可以/应该异步填充模型,如下所述:stackoverflow.com/questions/38076147/…
-
500KB 对于当今最慢的计算机或 SQLite 来说,什么都不是。 db 可以很容易地完全放入内存中,并且将其加载到您的程序中非常快。此时延迟不太可能来自数据库。
标签: c# performance entity-framework async-await