views:

63

answers:

3

if writing below codes: Error returns.i do like advise :
http://stackoverflow.com/questions/794364/how-do-i-use-transactionscope-in-c
But only error change:The partner transaction manager has disabled its support for remote/network transactions Exception from HRESULT: 0x8004D025

i am using windows server 2003.


 using (var stockMovementCtx = new StockMovementCtxDataContext())
            {
                using (var scope = new TransactionScope())
                {

// do something....
}
scope.Complete();
}

but if i changed my codes ; every thing is ok:


using (var stockMovementCtx = new StockMovementCtxDataContext())
            {


// do something....

}

How can i solve below error. This is really important.Please help me:((((

+3  A: 

TransactionScope will elevate to DTC if necessary. It sounds like DTC is not correctly configured, usually due to firewall restrictions. Try a dtcping between the servers (important: in both directions).

Marc Gravell
+1  A: 

DataContext by default wraps all operations within a Transaction, so you don't need to explicitly do Transaction while working with DataContext. Read this.

http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx

using (var stockMovementCtx = new StockMovementCtxDataContext())
{
     // do something....


     //everything until this point is within the transaction.
     stockMovementCtx.SubmitChange();
}

Why we need TransactionScope ?

TransactionScope enables you to perform transactions beyond dataabse. Say you have series of operations as below and all are atomic and they need be performed within a transaction.

1.) Add record in Table 1
2.) Add record in Table 2
3.) Write a NEW file on the Disk
4.) Rename file X on the disk
5.) Update file record in Table 3

If you use SqlTransaction then only the operaration 1,3 and 5 can participate in the transaction but 3 and 4 cannot because they do not relate database at all. In such cases TrasanctionScope can help you. TransactionScope leverages the MSDTC (Distributed Trasanction co-coordinator) that can help you do transactions beyond database context. You can wrap all five operations within a TransactionScope transaction execute them atomically. It is also worth noting that TransactionScope supports nested transactions, that means one block of transaction can contain multiple set of transactions.

this. __curious_geek
Dear this. __curious_geek; why we need "TransactionScope". Every thing is ok without "TransactionScope"...
Phsika
Check my edited answer.
this. __curious_geek