ตอบตรงนี้แทนได้มั๊ยอ่ะ
DBConnString Connstring = new DBConnString();
string strConn = Connstring.strConn;
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
}
Conn.ConnectionString = strConn;
Conn.Open();
เละโคด ถ้า conn เปิดอยู่ ก็ให้ปิด แล้วเปิดใหม่ กรณีที่ถ้าไม่ได้ใช้ conenction pooling ไม่เจ๊งหรอคับ ถ้าเจอ multi session?
แนะนำให้เขียนแยกเป็น static class ต่างหาก เหมือนเป็นอีก library นึง แล้วเรียกใช้เอาจะดีกว่า รองรับ multi session
ประมาณนี้
public static class db{
private static string connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["..."].ConnectionString;
public static ... Execute(...){
// ใช้ interface เพราะถ้าเปลี่ยน db จะได้ไม่ต้องแก้ code
IDbConnection connection = ...;
IDbCommand cmd = connection.CreateCommand();
try{
cmd.Connection.Open();
cmd.Execute...;
return ...;
}
finally{
// ใส่ try catch ด้วยก็ดี ส่วนถ้าเป็นกรณี connection pooling บรรทัดนี้ จะไม่มีผล(pooling ไม่มีปิด conenction)
cmd.Connection.Close();
}
}
}
เวลาใช้ก็ db.Execute(...)
หรือถ้าเป็น .Net 4.0 แล้วอยากให้มันเร็วๆก็
(new Action[] {
new Action(() => { db.Execute(...1...) }),
new Action(() => { db.Execute(...2...) }),...
})
.AsParallel()
.ForAll(code => code());
ถ้าจะเอาผลลัพธ์ ก็เปลี่ยนAction เป็น Func<TResult> แล้วหา List มารับ