ฉันมีแบบสอบถามสำหรับอ่านที่ฉันดำเนินการภายในธุรกรรมเพื่อที่ฉันจะได้ระบุระดับการแยก เมื่อสอบถามเสร็จแล้วควรทำอย่างไร?
- ทำธุรกรรม
- ย้อนกลับธุรกรรม
- ไม่ต้องทำอะไรเลย (ซึ่งจะทำให้ธุรกรรมถูกย้อนกลับในตอนท้ายของบล็อกการใช้งาน)
อะไรคือผลกระทบของการทำแต่ละอย่าง?
using (IDbConnection connection = ConnectionFactory.CreateConnection())
{
using (IDbTransaction transaction = connection.BeginTransaction(IsolationLevel.ReadUncommitted))
{
using (IDbCommand command = connection.CreateCommand())
{
command.Transaction = transaction;
command.CommandText = "SELECT * FROM SomeTable";
using (IDataReader reader = command.ExecuteReader())
{
// Read the results
}
}
// To commit, or not to commit?
}
}
แก้ไข: คำถามไม่ใช่ว่าควรใช้ธุรกรรมหรือมีวิธีอื่นในการตั้งค่าระดับธุรกรรมหรือไม่ คำถามคือถ้ามันสร้างความแตกต่างที่ธุรกรรมที่ไม่มีการปรับเปลี่ยนอะไรจะถูกผูกมัดหรือย้อนกลับ มีประสิทธิภาพแตกต่างกันหรือไม่? มีผลต่อการเชื่อมต่ออื่น ๆ หรือไม่? ความแตกต่างอื่น ๆ ?