ソフト削除が必要なデータベースについては、IsActive
ビットの列があります。 falseの場合、レコードが削除済みとマークされたことを示します。式ビジターまたはIDbCommandTreeInterceptorを無視する
時間の99%の間、クエリは、IsActive
がtrueに設定されているレコードのみを含める必要があります。 Entity Framework 6では、カスタムDefaultExpressionVisitor
(IDbCommandTreeInterceptor
経由)を使用して、テーブルに列が存在するときに自動的にこのチェックを行います。
ただし、ごくまれにこの動作を無効にする必要があります。式のビジターまたはコマンドツリーインターセプタがチェックできるIQueryableの拡張メソッドまたはDbContextの設定を記述する方法はありますか?私は希望
var query = queryable.Where(...);
:これを行うとき
私は、そうでない場合に発生すること、上記の動作に影響を与えるために
var query = queryable.IncludeInactive().Where(...);
または
_dbContext.IncludeInactive = true;
var query = queryable.Where(...);
_dbContext.IncludeInactive = false;
ような何かを望んでいます可能であれば、拡張メソッドのルートを優先します。