:アンビエントトランザクションを使用ASP.NETコアでは、どのように拡張メソッドにHttpContextを注入しますか?擬似周囲トランザクション実装するSqlCommandオブジェクトの拡張メソッドを使用するASP.NETコアに継承されたASP.NETアプリケーション移植
public static class SqlExtension
{
public static SqlCommand NewCommand(this SqlConnection c)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = c;
SqlTransaction ambientTransaction = (SqlTransaction)
HttpContext.Current.Items["AmbientTransaction"];
if (ambientTransaction != null)
{
cmd.Transaction = ambientTransaction;
}
return cmd;
}
SQL文は、場所の何百ものコード全体に広がっています。 HttpContextはもはやグローバルにアクセスできないので、私は提案に感謝するでしょう:
1)物事を一時的に働かせる方法について。拡張メソッドにHttpContextを挿入することは可能ですか?
2)同じ目標を達成する、つまり単一のhttp要求で実行されたすべての作業の回りにSQLトランザクションをラップする、コードが再実装されるときのパターン。
だけでなく必要があなたは、メソッドの引数として 'HttpContext'を追加することができます。 – Amy
良い提案。 'public static SqlCommand NewCommand(このSqlConnection c、HttpContext h)の行に沿って何かを行い、元のものから新しい拡張メソッドを呼び出すことを望んでいました。 – Mark
httpコンテキストを使用せず、代わりに – davidfowl