CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 482

482
Chương 12: Dịch vụ Web XML và Remoting

4.

4.

T o ph

ng th c web h tr giao d ch

ươ

ỗ ợ

T o ph

ng th c web h tr giao d ch

ươ

ỗ ợ

Bạn muốn thực thi tất cả các hành động của một phương thức web trong ngữ
cảnh của một phiên giao dịch COM+
sao cho chúng chỉ có hai khả năng: hoặc là
thành công hoặc là thất bại.

Kích hoạt một phiên giao dịch tự động bằng cách chọn một giá trị thuộc kiểu liệt

System.EnterpriseServices.TransactionOption

và áp dụng nó cho thuộc tính

TransactionOption

của đặc tính

WebMethod

.

Trong ASP.NET, dịch vụ Web XML hỗ trợ các phiên giao dịch tự động (có thể được kích hoạt
trên mỗi phương thức). Khi được kích hoạt, bất kỳ nguồn dữ liệu nào có hỗ trợ giao dịch
COM+ sẽ tự động được đưa vào phiên giao dịch hiện hành khi nó được sử dụng trong mã lệnh
của bạn. Phiên giao dịch sẽ tự động được commit khi phương thức web hoàn tất. Phiên giao
dịch này được roll-back khi có bất kỳ ngoại lệ chưa-được-thụ-lý nào xảy ra hoặc bạn gọi
phương thức

SetAbort

của lớp

System.EnterpriseServices.ContextUtil

.

Để kích hoạt việc hỗ trợ giao dịch cho một phương thức web, bạn cần thiết lập thuộc tính

TransactionOption

của đặc tính

WebMethod

RequiresNew

. Ví dụ, phương thức web (hỗ trợ

giao dịch) dưới đây sẽ xóa các bản ghi trong một cơ sở dữ liệu và rồi hủy bỏ phiên giao dịch
này. Để sử dụng đoạn mã này, bạn phải thêm một tham chiếu đến
System.EnterpriseServices.dll.

using System;

using System.Data.SqlClient;

using System.Web.Services;

using System.EnterpriseServices;

public class TransactionTest {

private static string connectionString = "Data Source=localhost;" +

"Initial Catalog=Northwind;user ID=sa";

[WebMethod(TransactionOption=TransactionOption.RequiresNew)]

public void FailedTransaction() {

// Tạo kết nối.

SqlConnection con = new SqlConnection(connectionString);

// Tạo câu truy vấn SQL.

SqlCommand cmd = new SqlCommand("DELETE * FROM Customers", con);

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.