2016-04-13 7 views
3

Entity Frameworkでストアドプロシージャを実行する必要があります。トランザクションに含まれていないEntity FrameworkでSQLCommandを実行する方法

通常、私はこのようにそれを呼び出す:

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

しかし、この特定のストアドプロシージャは、リンクサーバーにアクセスすることを含みます。

EFはトランザクション内でExecuteSqlCommandをラップするため、リンクされたサーバーはトランザクションでサポートされていないため、失敗しています(わかる限り)。

Entity Frameworkでこのストアドプロシージャをトランザクションに入れずに実行する方法はありますか?

答えて

7

ExecuteSqlCommand方法の最初のパラメータとして渡すTransactionalBehavior.DoNotEnsureTransaction。例えば

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

どうもありがとうございました。そのパラメタは、何かを稼働させようとするのを半日終わらせました。 – Stix

+0

これはEntity Framework Coreで可能ですか? – smistry

+0

@smistry https://github.com/aspnet/EntityFrameworkCore/issues/4882を参照してください "現在、トランザクションを開始または終了するExecuteSqlCommandのロジックはありません。基盤となるRelationalCommandは、トランザクションがRelationalConnection " –

関連する問題