用户代码未处理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
             }
        }

这是不是因为我给数据库加载太多而导致了这个错误?

用户代码未处理C#EntityException

看起来您正在重新使用以前创建的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
     }
}
相关文章:
  • 没有找到相关文章