LINQ to SQL DataContext and IDisposable



我刚刚开始处理一个使用LINQ to SQL的项目。我注意到代码没有使用iDisposable,我自己永远不会传递DataContext然而,由于它是在1个方法中创建并传递给另一个do,我需要做db。Dispose()2次,每个方法一次,还是只在创建DataContext实例的方法上一次?

  protected void btnSaveCC_Click(object sender, EventArgs e)
        {
            var db = new DataContext();
            CCBadgeInfo(db);
        }

  private void saveCCInfo(DataContext db)
        {
            var currentCase = (Case)HttpContext.Current.Items["CurrentCase"];
            if (currentCase.TypeId == (int)prj.Constants.Constant..CreditFraud)
            {
                var applicant = db.Applicants.Where(a => a.ApplicantId == currentCase.ApplicantId).SingleOrDefault();
                applicant.CCExpirationDate = tryConvertDateTime(txtCCExpirationDate.Text);
            }
            db.SubmitChanges();
        }

您应该只调用它一次。但是,多次调用Dispose应该没有任何害处:IDisposable.Dispose()是否应该安全地多次调用?

在您的情况下,您可以选择

protected void btnSaveCC_Click(object sender, EventArgs e)
{
    using (var db = new DataContext()) {
        CCBadgeInfo(db);
    }
}

或者只在saveCCInfo方法中创建并处置DataContext。

最新更新