Ako bolo spomenuté tu
pomocou Entity Framework 6, ak začneme transakciu pomocou Database.BeginTransaction()
môžeme skontrolovať, či kontext má transakciu pomocou tohto vyhlásenia:
var transaction = db.Database.CurrentTransaction;
Bohužiaľ tento spôsob nefunguje, ak sme používali TrasctionScope začať transakciu:
var transactionScope = new TransactionScope();
Len sa zaujímam, či existuje nejaký spôsob, ako skontrolovať, či má kontext transakciu, keď ju používam TrasctionScope ?
odpovede:
0 pre odpoveď č. 1Pomocou rámca entity 6 môžete používať transakcie pomocou tahových spôsobov:
Použitím
Database.BeginTransaction()
ako v:using (var context = new Context()) { using (var dbContextTransaction = context.Database.BeginTransaction()) { try { //Some EF Statments Context.SaveChanges(); dbContextTransaction.Commit(); } catch (Exception) { dbContextTransaction.Rollback(); } }
Druhý spôsob používania TransactionScope :
using (var scope = new TransactionScope()) { //Some EF Statments Context.SaveChanges(); scope.Complete(); }
ak ste prvý spôsob použitia, môžete získať inštanciu transakcie pomocou príkazu:
var transaction = context.Database.CurrentTransaction;
Na druhej strane, ak začnete transakciu používať TrasctionScope, musíte použiť:
var transaction = System.Transactions.Transaction.Current;
získať inštanciu transakcie alebo skontrolovať, či kontext má transakciu alebo nie