Sie können explizit eine Transaktion erstellen und um übergeben, das heißt
using(var connection = ...)
{
connection.Open();
using (var tran = connection.BeginTransaction())
{
try
{
FBSave(connection, tran);
FBSaveDetails(connection, tran);
tran.Commit();
}
catch
{
tran.Rollback();
throw;
}
}
}
Beachten Sie, dass hier Sie Muss auch die Transaction
auf jedem Befehl gesetzt, also warum Sie es in geben müssen, und alle Befehle müssen sich auf demselben Verbindungsobjekt befinden.
Oder: Sie können TransactionScope
verwenden; es ist wichtig, dass die Open()
innerhalb der TransactionScope
geschieht automatisches enlistment zu erhalten:
using(var tran = new TransactionScope())
{
FBSave();
FBSaveDetails();
tran.Complete();
}
oder:
using(var tran = new TransactionScope())
using(var connection = ...)
{
connection.Open();
FBSave(connection);
FBSaveDetails(connection);
tran.Complete();
}
mit dem TransactionScope
Ansatz, die Sie nicht etwas Besonderes festlegen müssen - die meisten es ist automatisch. Sie können die Verbindung natürlich optional in die Methoden übergeben, aber sie könnten auch ihre eigene Verbindung erhalten, und in den meisten Fällen würde es gut funktionieren.
MS Access oder SQL Server konfiguriert werden? – andy
Wie machen Sie Ihre Datenschicht? Gespeicherte Prozeduren? linq-zu-sql? in Verbindung gebracht? getrennt? –
Sie können tun, was Sie wollen, indem Sie Transaktionen verwenden, http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction(v=vs.100).aspx – Raghuveer