Модульное программирование - это правильный подход, но иногда это приводит к проблеме, требующей дополнительных усилий и исследований. У меня есть три функции вставки базы данных, например, InsertName(),InsertAddress(),InsertPhoneNo()
. Все эти функции должны выполняться, если исключение возникает в любой из функций, никаких изменений в базе данных не будет.Одиночная транзакция по нескольким методам
Что я могу сделать, это объединить все три в одном и использовать sqltransaction.
InsertDetails()
{
using (SqlTransaction sqlTransaction = cn.BeginTransaction())
{
using (SqlCommand cm = new SqlCommand())
{
cm.Transaction = sqlTransaction;
InsertName();//Code to insert name
Insertaddress();//code to insert address
InsertPhoneNo();//code to insert phone no
}
sqlTransaction.Commit();
}
}
но решение, приведенное выше, противоречит моему модульному подходу. Возможно ли связать несколько функций с одной транзакцией sql без их слияния, если это не лучший способ, который можно достичь.
В качестве примечания - вам нужно посмотреть в коде в своих методах, чтобы убедиться, что это подходит, и обеспечить сохранение транзакции в базе данных и не перенаправить ее в распределенную транзакцию! – Paddy