3

我有一个稍微过度设计的代码,需要DataContextSqlConnection. 这篇 MSDN 文章

如果您提供打开的连接,DataContext 将不会关闭它。因此,除非您有充分的理由这样做,否则不要使用打开的连接实例化 DataContext。

在我的代码中,我将有效地拥有这个:

using( var connection = new SqlConnection( connectionString ) ) {
    connection.Open();
    // some action
    using( var context = new DataContext( connection ) ) {
       //some action with the context object
    }
    //more action with the connection
}

using对我来说它看起来很好 - 当外部崩溃时连接将关闭。然而,我不应该这样做。

上面的代码片段是否正确地同时使用了这两个类?我应该期待任何问题吗?

4

2 回答 2

3

您的意图应该是保持连接活着,并将连接传递给所有方法,在开始时打开它并在结束时关闭它,以提高性能,这很好,但看起来很麻烦。并且“连接”将被传递,甚至被业务逻辑层引用。

也许你应该找到更好的方法。:)

于 2012-12-18T15:37:54.450 回答
0

假设您有这个生成的 DataContext 类:

public partial class MyDataContext: System.Data.Linq.DataContext
{
 ...
}

要与 SqlConnection 一起使用,请执行以下操作:

 using (var cnn = new SqlConnection("my connection string"))
 {
     cnn.Open();

     var dc= new MyDataContext(cnn);
     // enjoy
     ...
     cnn.Close();
 }
于 2021-08-02T13:06:53.230 回答