我使用时是否需要关闭连接?

时间:2014-07-17 11:43:38

标签: c# linq sqlconnection

我有以下代码:

newCustomerDataSourceDataContext db = GetDataContext();
{
    var tId = from t in db._CRM_Ticket_Headers
              from p in db.CRM_Priority_LKPs
              where t.created >= fromDate &&
                  t.created < toDate &&
                  t.priorityId == p.priorityId &&
                  t.statusId == status &&
                  t.employeeUserId == csrId
              select t;
}

我是否必须手动关闭连接,如果我添加using,我使用 Linq ,如下所示:

using (newCustomerDataSourceDataContext db = GetDataContext())
{
    var tId = from t in db.CRM_Ticket_Headers
              from p in db.CRM_Priority_LKPs
              where t.created >= fromDate &&
                  t.created < toDate &&
                  t.priorityId == p.priorityId &&
                  t.statusId == status &&
                  t.employeeUserId == csrId
              select t;
}

2 个答案:

答案 0 :(得分:2)

这取决于你想要发生什么。如果使用using块,将在关闭连接的上下文中调用Dispose方法。但是,如果您的应用程序使用延迟加载,那将不再有效。

答案 1 :(得分:1)

不,一旦你不使用阻止它将被关闭。离开那个区块时,资源会被清理干净。

你应该处理datacontect吗?

  

答案简短;不,你不必,但你应该......

     

DataContext保存状态(例如,SqlConnection和指向您已检索的对象的指针)。一旦释放所有引用,这些最终将被GC清理,但是这些对象中的一些(例如,底层的SqlConnection)可能会保留您通常希望在完成后立即释放的资源,而不是依赖于GC清理。

如前所述,如果以懒惰模式检索数据,它将无法正常工作