0
入力モデルのパラメータを検証するASP.NET Core Webアプリケーションのフィルタ属性を作成しています。いくつかの入力パラメータとSQL DBの別の値を比較する必要があります。フィルターの内部でDB接続を開くのがよい方法ですか?フィルタ属性内でデータベースを操作する
入力モデルのパラメータを検証するASP.NET Core Webアプリケーションのフィルタ属性を作成しています。いくつかの入力パラメータとSQL DBの別の値を比較する必要があります。フィルターの内部でDB接続を開くのがよい方法ですか?フィルタ属性内でデータベースを操作する
フィルタ属性は、複数のアクションメソッドやコントローラにわたってクロスカッティングの問題をキャプチャするのに適しています。これが当てはまる場合は、フィルタ属性を使用するのが良い方法です。
実際、フィルタは、アクションメソッドを呼び出すステップとまったく同じように、要求処理パイプラインのもう1つのステップです。したがって、基本的には、フィルタやアクションメソッドで検証を実行するかどうかに違いはありません。
配慮のカップル:
await
を実行し、要求スレッドをブロックしないようにすることができます。繰り返しますが、まさにこの理由のためにasync
アクションを実装するでしょう。Microsoft Docs on ASP.NET Core filters
public class SampleAsyncActionFilter : IAsyncActionFilter
{
public async Task OnActionExecutionAsync(
ActionExecutingContext context,
ActionExecutionDelegate next)
{
// do something before the action executes
var resultContext = await next();
// do something after the action executes; resultContext.Result will be set
}
}
から引用非同期フィルタの例、関連項目この回答にリンクします。https://stackoverflow.com/a/40718992/4544845
downvoteのための明確な理由がありません –