Както е споменато тук
използвайки Entity Framework 6, ако започнем да използваме транзакция Database.BeginTransaction()
можем да проверим дали контекстът има транзакция, използваща това изречение:
var transaction = db.Database.CurrentTransaction;
За съжаление този начин не работи, ако използваме TrasctionScope да започнете транзакция:
var transactionScope = new TransactionScope();
Просто се чудя дали има някакъв начин да проверя дали контекстът има транзакция, когато използвам TrasctionScope ?
Отговори:
0 за отговор № 1Използвайки рамката на елемент 6 можете да използвате транзакциите, като използвате начини за теглене:
Използвайки
Database.BeginTransaction()
метод, подобен на:using (var context = new Context()) { using (var dbContextTransaction = context.Database.BeginTransaction()) { try { //Some EF Statments Context.SaveChanges(); dbContextTransaction.Commit(); } catch (Exception) { dbContextTransaction.Rollback(); } }
Използвайте втория начин TransactionScope :
using (var scope = new TransactionScope()) { //Some EF Statments Context.SaveChanges(); scope.Complete(); }
ако сте използвали първия начин, можете да получите инстанция за транзакция, като използвате изявление:
var transaction = context.Database.CurrentTransaction;
От друга страна, ако започнете транзакция с TrasctionScope, трябва да използвате:
var transaction = System.Transactions.Transaction.Current;
да получите инстанция за транзакция или да проверите дали контекстът има транзакция или не