自動過濾實體框架中的軟刪除實體
使用Entity Framework Code First 時,「軟刪除」是一種常見做法,允許將實體標記為已刪除,而無需實際將其從資料庫中刪除。這種方法維護歷史數據,同時從邏輯上從查詢中排除不活動的實體。
為了實現軟刪除,可以在 DbContext 的 SaveChanges 方法中實作自訂邏輯,如問題所示。這可確保實體實作 ISoftDelete 介面並具有“Delete”方法將其標記為已刪除。
自動擷取軟體刪除實體
但是,問題進一步詢問如何在擷取資料時自動忽略軟體刪除實體。解決方案在於使用 Entity Framework 動態過濾器,該程式庫提供了一種優雅的方式來建立全域過濾器,該過濾器將自動套用於所有相關查詢。
實作EntityFramework.DynamicFilters
要實作EntityFramework.DynamicFilters
重寫 DbContext 類別中的 OnModelCreating 方法並呼叫 Filter 方法。
modelBuilder.Filter("IsDeleted", (ISoftDelete d) => d.IsDeleted, false);指定過濾器名稱、表示過濾條件的 lambda 表達式以及指示過濾器的標誌過濾器是否預設為啟用。
例如,對於「IsDeleted」過濾器:
用法
接口的實體的查詢將自動包含where 子句“where IsDeleted = false” 。這確保軟刪除的實體被透明地從結果集中排除,無需任何額外的程式碼。 注意EntityFramework.DynamicFilters 提供的 Filter 方法支援複雜的篩選條件和也可以套用於導覽屬性。透過利用該程式庫,開發人員可以簡化資料檢索,同時保持軟刪除的靈活性。以上是如何自動過濾掉實體框架中的軟體刪除實體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!