Transazione esplicita in Entity Framework 7

asp.net-core c# entity-framework-core

Domanda

Qualcuno sa come creare una transazione esplicita in Entity Framework 7 ??? Tutte le informazioni che ho trovato si riferiscono alla versione 6 di EF. Anche la documentazione è molto incompleta, quindi qualcuno potrebbe fornirne un esempio?

Ho un dbContext e devo eliminare un'entità ed è oggetti correlati, e quindi inserirli di nuovo, ma nella stessa transazione, quindi avrò sempre una "versione" delle righe.

Risposta accettata

La funzionalità di transazione è inclusa in EF7 a partire solo da RC1 (vedere la dichiarazione ). La chiamata di .SaveChanges() (o .SaveChangesAsync() ) dovrebbe utilizzare la transazione automatica. Quindi suppongo che lo stato di alcuni elementi delle entità dovrebbe essere contrassegnato come eliminato prima, per esempio.

Si può iniziare la transazione esplicitamente avvolgendo alcuni frammenti di manipolazione sul database all'interno di

using (context.Database.BeginTransaction()) {
    /*do something*/
}

La transazione sarà impegnata tramite chiamata di .Dispose() alla fine using blocco. Si può usare in alternativa

using (var transaction = await context.Database.BeginTransactionAsync()) {
    /*do something*/
    /*one can call
       transaction.Rollback() or transaction.Commit()
      explicitly in the code */
}

In generale dovrebbe apparire come nella versione precedente di Entity Framework. Guarda il post per esempio.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché