對於我們需要軟刪除的數據庫,我們有一個IsActive
位列。如果爲false,則表示記錄已被標記爲已刪除。忽略表達式訪問者或IDbCommandTreeInterceptor
對於99%的時間,查詢應該只包含IsActive
設置爲true的記錄。在實體框架6中,我們使用自定義的DefaultExpressionVisitor
(通過IDbCommandTreeInterceptor
)在列存在於表上時自動進行此檢查。
但是,在極少數情況下,這種行爲需要被覆蓋。有沒有辦法爲IQueryable編寫擴展方法,或者在DbContext上設置表達式訪問者或命令樹攔截器可以檢查的設置?
我希望能像做
var query = queryable.IncludeInactive().Where(...);
或
_dbContext.IncludeInactive = true;
var query = queryable.Where(...);
_dbContext.IncludeInactive = false;
影響上面所描述的行爲,否則將會發生這樣的時候:
var query = queryable.Where(...);
我會如果可能,更喜歡擴展方法路由。