我有100多个这样的方法,每个方法被调用超过一千次.这里每次调用都会创建一个新的SqlConnection)(取自池).虽然方法很小并且控制立即离开方法,但是应该由GC收集SqlConnection.
Method()
{
MyComponent adapter = new MyComponent ();
adapter.Connection = GetConnection(dbContext);//Here I get new SqlConnection
adapter.Update(_SqlTable);
Run Code Online (Sandbox Code Playgroud)
} //方法结束
我的问题是 - 以下优化是否有任何区别?
Method(){
MyComponent adapter = new MyComponent ();
adapter.Connection = GetConnection(dbContext);//Here I get new SqlConnection
adapter.Update(_SqlTable);
adapter.Connection.Close() // Or Dispose()
} //End of Method
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来编写这些方法(例如,使它们成为静态静态方法)
是的,你应该绝对关闭连接而不是让它最终完成.您是否正在尝试编写自己的连接池?如果是这样,请不要 - 框架自动提供它.只需创建一个新的SqlConnection,它将从池中获取底层连接.
你应该使用一个using语句来确保无论发生什么情况都要处理连接:
using (SqlConnection connection = GetConnection(dbContext))
{
MyComponent adapter = new MyComponent(connection);
adapter.Update(_SqlTable);
}
Run Code Online (Sandbox Code Playgroud)
您应该记录这MyComponent确实不是采取在这种情况下连接的生存责任.另一种方法是创建MyComponent实现IDisposable,在构造函数中传递数据上下文,并处理:
using (MyComponent adapter = new MyComponent(dbContext))
{
adapter.Update(_SqlTable);
}
Run Code Online (Sandbox Code Playgroud)
在不知道什么的情况下,很难提供更多的设计建议MyComponent.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |