Bạn rõ ràng có thể tạo ra một giao dịch và thông qua đó xung quanh, ví dụ:
using(var connection = ...)
{
connection.Open();
using (var tran = connection.BeginTransaction())
{
try
{
FBSave(connection, tran);
FBSaveDetails(connection, tran);
tran.Commit();
}
catch
{
tran.Rollback();
throw;
}
}
}
Lưu ý rằng ở đây bạn phải cũng đặt Transaction
trên mỗi lệnh, do vậy tại sao bạn cần phải vượt qua nó vào, và tất cả các lệnh phải nằm trên cùng một đối tượng kết nối.
Hoặc: bạn có thể sử dụng TransactionScope
;
using(var tran = new TransactionScope())
{
FBSave();
FBSaveDetails();
tran.Complete();
}
hay:: điều quan trọng là Open()
xảy ra bên các TransactionScope
để có được nhập ngũ tự động là
using(var tran = new TransactionScope())
using(var connection = ...)
{
connection.Open();
FBSave(connection);
FBSaveDetails(connection);
tran.Complete();
}
với cách tiếp cận TransactionScope
, bạn không cần phải thiết lập bất cứ điều gì đặc biệt - hầu hết nó là tự động. Dĩ nhiên, bạn có thể tùy ý chuyển kết nối vào các phương thức, nhưng chúng cũng có thể có được kết nối riêng của chúng, và trong hầu hết các trường hợp, nó sẽ hoạt động tốt.
Nguồn
2012-12-19 07:18:46
MS Access hoặc SQL Server? – andy
làm thế nào để bạn làm lớp dữ liệu của bạn? lưu trữ-thủ tục? linq-to-sql? được kết nối? bị ngắt kết nối? –
Bạn có thể thực hiện những gì bạn muốn bằng cách sử dụng các giao dịch, http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction(v=vs.100).aspx – Raghuveer