2009-05-13 32 views

Trả lời

3

Khi nói đến giao dịch dựa trên kết nối (IDbTransaction), hiệu suất tổng thể sẽ khá giống nhau - nhưng bằng cách xử lý nó trong mã .NET bạn có thể thuận tiện mở rộng nhiều hoạt động cơ sở dữ liệu trên cùng một kết nối. Nếu bạn đang làm quản lý giao dịch bên trong TSQL bạn thực sự nên giới hạn nó vào truy vấn TSQL đơn. Có thể có thêm một chuyến đi khứ hồi để bắt đầu/kết thúc, nhưng điều đó không có khả năng làm tổn thương bạn. Nó là khá hiếm (những ngày này) mà tôi sẽ tự viết các giao dịch dựa trên TSQL - có lẽ nếu tôi đã viết một cái gì đó gọi trực tiếp bởi máy chủ thông qua một đại lý (chứ không phải từ mã ứng dụng của riêng tôi).

Sự khác biệt lớn giữa IDbTransactionTransactionScope thấy Transactions in .net cho hơn, nhưng phiên bản ngắn gọn là TransactionScope là hơi chậm (tùy thuộc vào kịch bản), nhưng có thể span nhiều kết nối/cơ sở dữ liệu (hoặc các nguồn lực khác).

+0

Cảm ơn Marc ... Tôi vẫn muốn biết tại sao một người dùng IDbTransaction khi anh ta có thể sử dụng một giao dịch trong một SQL được lưu trữ proc –

+0

Bởi vì bạn có thể muốn IDbTransaction trải rộng nhiều hoạt động nguyên tử có lẽ đã tồn tại). Bạn không thể làm điều đó nếu các giao dịch bên trong sproc, nhưng bạn có thể nếu nó chỉ là kết nối dựa. Nó cũng là tốt hơn từ một tách góc quan tâm: bạn di chuyển responsibiliy cho các giao dịch đi từ sproc, ai là công việc là để cập nhật một số dữ liệu (vv). –

Các vấn đề liên quan