我目前正在参与一个利用 EF 6 的旧版 ASP.NET MVC 5 项目。该项目要求在某些操作中选择性排除全局筛选器以检索软删除的数据。在研究过程中,我发现了 EF Core 中的
IgnoreQueryFilters
功能,遗憾的是 EF6 中不提供该功能。
我正在寻求有关潜在替代方案或方法的指导,以在我的场景中选择性地绕过此全局过滤器。
这是在
ApplicationDbContext
类中使用的代码:
modelBuilder.Filter("IsDeleted", (Projects p) => p.IsDeleted, false);
EF 6 本身不支持全局过滤器。您可能正在使用 EF 动态筛选器 NuGet 包,在这种情况下,您已经创建了名称为“IsDeleted”的筛选器,因此您可以使用以下方法一次性禁用它:
_context.DisableFilter("IsDeleted");
var data = _context.Items.Where(...)...
_context.EnableFilter("IsDeleted"); // Re-enable if you have other queries that should respect the filter.