web-dev-qa-db-ja.com

EF CoreでのSQLトレース中にパラメーター値が失われました

この記事に従って、EF CoreからSQLクエリをトレースするアプローチを実装しました: https://docs.Microsoft.com/en-us/ef/core/miscellaneous/logging 。また、クエリパラメータのトレースに問題があります。 DbParameterLogDataのすべての値でLogイベントを受け取ると、クエリに渡した実際の値の代わりに疑問符だけが表示されます。

enter image description here

私はVS 2015を使用しています。ありがとうございます!

24
asat

これはEF Coreのデフォルトの動作です( DbParameterLogData.Value プロパティに"?"を入力)。

実際のパラメーター値を取得するには、 DbContextOptionsBuilder.EnableSensitiveDataLogging メソッドを使用してsensitive data loggingを有効にする必要があります。

アプリケーションデータを例外メッセージ、ロギングなどに含めることができます。これには、エンティティインスタンスのプロパティに割り当てられた値、データベースに送信されるコマンドのパラメーター値を含めることができます、およびその他のそのようなデータ。このデータの機密性に基づいて適切なセキュリティ対策を実施している場合にのみ、このフラグを有効にしてください。

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.EnableSensitiveDataLogging();
    // ...
}
47
Ivan Stoev