如果我使用Linq,是否必须手动关闭SQL连接?

时间:2008-12-30 17:09:07

标签: sql-server visual-studio-2008 linq

传统上,当我们使用SQL字符串完成一些工作时,我们必须在页面关闭之前关闭sql连接,我想知道我是否使用Linq来执行数据操作我还需要手动关闭连接吗?

3 个答案:

答案 0 :(得分:10)

这与({em>完全重复)this question非常相似。

LINQ to SQL将在需要时打开和关闭连接 - 您实际上不必处理DataContext。但是,有些时候你可以“欺骗”上下文,在你不应该打开连接时 - 我个人喜欢将它作为理所当然的事情处理掉。有关LINQ to SQL团队的Matt Warren的更多详细信息,请参阅我对其他问题的回答。

然而,我不了解实体框架。

答案 1 :(得分:2)

我详细回答了一个关于关闭您可能感兴趣的联系的问题here


Microsoft已回答了这个问题here

  

Q值。我的数据库有多长时间了   连接仍然开放?

     

一个。连接通常保持打开状态   直到您使用查询结果。   如果您希望花时间处理   所有的结果并没有反对   缓存结果,应用ToList<(Of   <(TSource>)>)到查询。共同的   每个对象的场景   只处理了一次,流媒体   模型在DataReader中都是优越的   和LINQ to SQL。

     

连接使用的确切细节   取决于以下内容:

     

DataContext的连接状态   由连接构成   宾语。

     

连接字符串设置(for   例如,启用多个活动   结果集(MARS)。更多   信息,请参阅多个活动   结果集(MARS)。


可以找到更多详细信息here

  

创建LINQ to SQL DataContext时,可以提供现有的ADO.NET连接。针对DataContext的所有操作(包括查询)都使用此提供的连接。如果连接已经打开,LINQ to SQL会在完成连接后保留原样。

答案 2 :(得分:0)

在代码中,您无需打开和关闭连接。但是,IMO LinqDataContext应该被视为SqlConnection或SqlCommand之类的资源,并且应该是using块的一部分,以便在不使用时进行处理。虽然我已经在MSDN上阅读过这不是必要的,但这是一个很好的做法。