Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net LINQ到SQL DataContext和IDisposable_.net_C# 4.0_Linq To Sql - Fatal编程技术网

.net LINQ到SQL DataContext和IDisposable

.net LINQ到SQL DataContext和IDisposable,.net,c#-4.0,linq-to-sql,.net,C# 4.0,Linq To Sql,我刚开始做一个使用LINQ到SQL的项目。 我注意到代码没有使用iDisposable,我自己也不会传递DataContext 但是,因为它是在1个方法中创建的,并传递给另一个方法,所以我需要执行db.Dispose()吗 2次,每个方法一次,还是仅在创建DataContext实例的方法上一次 protected void btnSaveCC_Click(object sender, EventArgs e) { var db = new DataCo

我刚开始做一个使用LINQ到SQL的项目。 我注意到代码没有使用iDisposable,我自己也不会传递DataContext 但是,因为它是在1个方法中创建的,并传递给另一个方法,所以我需要执行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不会造成任何伤害:

在你的情况下,你可以

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

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

共识是:不,不需要处理:CCBadgeInfo的代码在哪里?