Profilato con SQL Server Profiler: EF 6 esegue ogni singola chiamata di stored procedure con BEGIN TRAN
e COMMIT TRAN
.EF6 esegue il wrapping di ogni singola chiamata di stored procedure nella propria transazione. Come prevenire questo?
Non è un cambio di rottura?
Forse non è solo un cambiamento di rottura, ma rende qualsiasi logica transazionale impossibile in SP come abbiamo mai in grado di far ritirare la nostra transazione nella stored procedure utilizzando ROLLBACK TRAN
(nota: non ci sono le transazioni nidificate in SQL Server), in modo da un rollback rollback a @@TRANCOUNT
zero. Dato che eravamo in una transazione perché EF 6 abbiamo ottenuto "Conteggio transazioni dopo EXECUTE indica un numero non corrispondente di istruzioni BEGIN e COMMIT. Conteggio precedente = 1, conteggio corrente = 0". errore standard di SQL Server.
Per favore non chiedermi perché voglio chiamare stored procedure. Ne ho centinaia e tutti usano la logica TRY ... COMMIT ... CATCH ROLLBACK
.
Qualche idea come posso impedire a EF 6 di farlo?
Informazioni sull'utilizzo di ['UseTransaction'] (http://msdn.microsoft.com/en-us/library/system.data.entity.database.usetransaction (v = vs.113) .aspx) e avvio del proprio manualmente? –
Cosa ne pensi di utilizzare direttamente ADO.Net se vuoi un maggiore controllo? – Aron