用户代码未处理C#EntityException
本文关键字:C#EntityException 未处理 代码 用户 | 更新日期: 2023-09-27 18:22:06
我的应用程序中有76个复选框。当选中任何一个复选框时,我想从数据库中读取一些值。为了读取这些值,每次选中复选框时,我都会创建一个后台工作人员。
如果我一个接一个地选中这些复选框,就没有问题。但如果我一次检查所有这些,我的数据库代码会抛出EntityException
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
BackgroundWorker worker1 = new BackgroundWorker();
worker1.DoWork += new DoWorkEventHandler(worker1_DoWork);
worker1.RunWorkerAsync(sender);
}
void worker1_DoWork(object sender, DoWorkEventArgs e)
{
if (((CheckBox)e.Argument).Checked == true)
{
....Some Codes
var vv = (from value in d.tblValue join addres in d.tblAddres on value.AddresID equals addres.ID where value.AddresID == addresID && value.LoopDate >= startDate && value.LoopDate<= finishDate orderby value.LoopDate select new { value, addres }).ToList();
....Some Codes
}
}
这是不是因为我给数据库加载太多而导致了这个错误?
看起来您正在重新使用以前创建的DbContext
(变量d
),它不一定是线程安全的。尝试在worker1_DoWork
方法中创建一个新的DbContext
(不要重复使用单个实例)。
void worker1_DoWork(object sender, DoWorkEventArgs e)
{
if (((CheckBox)e.Argument).Checked == true)
{
....Some Codes
using(var db = new MyFooEntities())
{
var vv = (from value in db.tblValue
join addres in db.tblAddres on value.AddresID equals addres.ID
where value.AddresID == addresID &&
value.LoopDate >= startDate &&
value.LoopDate<= finishDate
orderby value.LoopDate
select new { value, addres }).ToList();
}
....Some Codes
}
}