我刚刚开始处理一个使用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。