ฉันมีการนำตรรกะทางธุรกิจของฉันไปใช้ในคลาสแบบคงที่ด้วยวิธีการคงที่ แต่ละวิธีเหล่านี้เปิด / ปิดการเชื่อมต่อ SQL เมื่อถูกเรียก:
public static void DoSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
แต่ฉันคิดว่าการหลีกเลี่ยงการเปิดและปิดการเชื่อมต่อจะช่วยประหยัดประสิทธิภาพได้ ฉันทำการทดสอบบางอย่างเมื่อครั้งก่อนด้วยคลาสOleDbConnection (ไม่แน่ใจเกี่ยวกับ SqlConnection) และมันช่วยได้มากในการทำงานเช่นนี้ (เท่าที่ฉันจำได้):
//pass the connection object into the method
public static void DoSomething(string something, SqlConnection connection)
{
bool openConn = (connection.State == ConnectionState.Open);
if (!openConn)
{
connection.Open();
}
// ....
if (openConn)
{
connection.Close();
}
}
คำถามคือ - ฉันควรเลือก method (a) หรือ method (b)? ฉันอ่านคำถามสแตกโอเวอร์โฟลว์อื่นที่การเชื่อมต่อร่วมกันบันทึกประสิทธิภาพสำหรับฉันฉันไม่ต้องกังวลเลย ...
PS เป็นแอป ASP.NET - มีการเชื่อมต่อระหว่างการร้องขอทางเว็บเท่านั้น ไม่ใช่วินแอปหรือบริการ
DbConnection.StateChange
เหตุการณ์เพื่อตรวจสอบการเปลี่ยนแปลงการเปลี่ยนแปลงสถานะของการเชื่อมต่อ (และอาจจัดเก็บไว้ในเครื่อง) แทนที่จะตรวจสอบDbConnection.State
คุณสมบัติโดยตรง จะช่วยให้คุณประหยัดต้นทุนด้านประสิทธิภาพ