3 votes

Comment exécuter ExecuteSqlCommand dans Entity Framework sans qu'il ne soit contenu dans une transaction

Je dois exécuter une procédure stockée avec Entity Framework.

Normalement, je l'appelle comme ceci:

this.Context.Database.ExecuteSqlCommand("EXEC edi_UploadTransmission");

Cependant, cette procédure stockée particulière inclut l'accès à un serveur lié.

Comme EF enveloppe ExecuteSqlCommand dans une transaction, elle échoue, car un serveur lié n'est pas pris en charge dans une transaction (autant que je puisse en juger).

Y a-t-il un moyen d'exécuter cette procédure stockée avec Entity Framework sans qu'elle ne soit dans une transaction ?

7voto

Rami A. Points 3207

Transmettez TransactionalBehavior.DoNotEnsureTransaction en tant que premier paramètre de la méthode ExecuteSqlCommand.

Par exemple,

this.Context.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, "EXEC edi_UploadTransmission");

1voto

Jonathan Allen Points 23540

Ma recommandation serait simplement de ne pas utiliser EF pour cette partie de votre code. Vous pouvez librement combiner EF avec du code ADO.NET pur ou avec d'autres ORMs tels que Dapper ou Chain.

https://github.com/docevaad/Chain/wiki/A-Chain-comparison-to-Dapper

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X