Tôi nhận được ngoại lệ sau khi sử dụng các hoạt động Nhibernate và ADO.Net bên trong giao dịch Scope.Eg. Đó là tốt với Nhibernate 2,1 nhưng bây giờ nâng cấp lên 3,0 mà ném lỗi.Nhibernate with TransactionScope Error - Giai đoạn chuẩn bị giao dịch DTC thất bại - Nâng cấp lên Nhibernate 3.0
using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
GetmemberId(); --> NHibernate Call
Update(); ADO Call OracleDB
}
Vì đây hoạt động giao dịch như môi trường xung quanh, Nhibernate cố gắng để xử lý các giao dịch sớm trước khi giao dịch bên ngoài completes.correct tôi nếu tôi sai, Có giải pháp nào vì giúp tôi, nhưng khi tôi chuyển cuộc gọi Nhibernate ngoài TransactionScope tất cả mọi thứ hoạt động tốt. Ví dụ tôi đã đưa ra là mẫu một, mỏ liên quan đến một mẫu phức tạp hơn, vì tôi đã giữ cả hai cuộc gọi bên trong TransactionScope và lỗi Iam nhận được như sau,
ERROR 13 NHibernate.Impl.AbstractSessionImpl - DTC transaction prepre pha không thành công System.ObjectDisposedException: Không thể truy cập đối tượng được phân phối . Tên đối tượng: 'Giao dịch'. tại System.Transactions.Transaction.DependentClone (DependentCloneOption cloneOption) tại System.Transactions.TransactionScope.SetCurrent (Transaction newCurrent) tại System.Transactions.TransactionScope.PushScope()
012.351.
tại System.Transactions.TransactionScope.Initialize (Transaction transactionToUse, TimeSpan scopeTimeout, Boolean interopModeSpecified) tại System.Transactions.TransactionScope..ctor (Transaction transactionToUse) tại NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare (PreparingEnlistment preparingEnlistment) 2011-02- 08 13: 41: 46,033 L ERI 13 NHibernate.Impl.AbstractSessionImpl - Giai đoạn chuẩn bị giao dịch DTC không thành công System.ObjectDisposedException: Không thể truy cập đối tượng được phân phối . Tên đối tượng: 'Giao dịch'. tại System.Transactions.Transaction.DependentClone (DependentCloneOption cloneOption) tại System.Transactions.TransactionScope.SetCurrent (Transaction newCurrent) tại System.Transactions.TransactionScope.PushScope()
tại System.Transactions.TransactionScope.Initialize (Transaction transactionToUse, TimeSpan scopeTimeout, Boolean interopModeSpecified) tại System.Transactions.TransactionScope..ctor (Transaction transactionToUse) tại NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare (preparingEnlistment preparingEnlistment)
Cảm ơn bạn! Nó làm việc cho tôi quá! – Saxophonist