我们应该在类中重用Static SqlConnection,还是更好地创建它的实例?
FactoryDB factory = FactoryDB.GetInstance("sp_select_regional", TipoExecucao.StoredProcedure, "portal_sadiaConnectionString"); factory.AutoReset = true; using (FactoryDB.Conn) { factory.ParametersCount = 1; factory.Parameters[0] = FactoryDB.CreateParameter(((IMarcas)Comentario).IDMarca, 'I', "@int_id_marca"); factory.AddParameters(); foreach (DataRow drFilial in factory.GetData().Rows) { Regionias filial = new Regionias() { IDRegional = Convert.ToInt32(drFilial["int_id_regional"]), TxtRegional = drFilial["txt_regional"].ToString() }; lstRegional.Add(filial); } return lstRegional; }
在此示例中,"using"使用FactoryDB类的静态SqlConnection,它使用SingleTon模式获取它的唯一实例.
我想知道使用Connection是否正确,如果想在DB中执行另一个查询,我需要将"FactoryDB.Conn"属性设置为NULL.
SqlConnection
每次需要时创建一个新实例,并尽快处理它.底层连接池将能够管理物理连接.
如果您使用单个静态连接,如果您需要任何多线程,事情会变得非常复杂......
编辑:如果你将值设置为null,那么无论如何都会重新创建,有一个静态变量的好处是什么?只需使用局部变量:
using (SqlConnection connection = CreateConnection()) { ... }
更简单,没有线程相互踩踏的风险.