linq 如何在EF6中复制IgnoreQueryFilter()的功能?

ct3nt3jp  于 2024-01-03  发布在  其他
关注(0)|答案(1)|浏览(121)

我目前参与了一个使用EF 6的遗留ASP.NET MVC 5项目。该项目要求在某些操作中选择性排除全局过滤器以检索软删除的数据。在研究过程中,我偶然发现EF Core中的IgnoreQueryFilters功能,不幸的是EF 6中没有。
我正在寻求潜在替代方案或方法的指导,以便在我的场景中选择性地绕过此全局过滤器。
下面是在ApplicationDbContext类中使用的代码:

  1. modelBuilder.Filter("IsDeleted", (Projects p) => p.IsDeleted, false);

字符串

atmip9wb

atmip9wb1#

EF 6本身不支持全局过滤器。您可能使用EF Dynamic Filters NuGet包,在这种情况下,您已经使用“Islets”名称创建了过滤器,因此您可以使用以下命令一次性禁用它:

  1. _context.DisableFilter("IsDeleted");
  2. var data = _context.Items.Where(...)...
  3. _context.EnableFilter("IsDeleted"); // Re-enable if you have other queries that should respect the filter.

字符串
...如果你正在使用一个注入的DbContext。如果你正在使用一个using块或类似的块来作用于一个新的DbContext示例,那么就不需要EnableFilter。

相关问题