【问题标题】:LINQ to SQL DataContext and IDisposableLINQ to SQL DataContext 和 IDisposable
【发布时间】:2014-11-10 15:31:41
【问题描述】:

我刚开始做一个使用 LINQ to 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();
        }

【问题讨论】:

标签: .net c#-4.0 linq-to-sql


【解决方案1】:

你应该只调用一次。但是,多次调用 Dispose 应该没有任何害处:Should IDisposable.Dispose() be made safe to call multiple times?

在你的情况下,你可以

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

或者只是在 saveCCInfo 方法中创建和处理 DataContext。

【讨论】:

    猜你喜欢
    • 2010-10-23
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多