我有一个稍微过度设计的代码,需要将DataContext
与SqlConnection
一起使用。 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
崩溃时,连接将被关闭。然而,我不应该这样做。
上面的代码段是否正确使用了这两个类?我应该期待任何问题吗?
答案 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();
}