如何一起使用SqlConnection和DataContext?

时间:2012-12-18 15:00:17

标签: c# .net sql-server

我有一个稍微过度设计的代码,需要将DataContextSqlConnection一起使用。 This MSDN article

  

如果提供打开的连接,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崩溃时,连接将被关闭。然而,我不应该这样做。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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();
 }