自学内容网 自学内容网

EF Core全局查询筛选器

目录

概述

用法

添加全局查询筛选器

禁用全局查询筛选器


概述

全局查询筛选器:EF Core 会自动将这个查询筛选器应用于涉及这个实体类型的所有 LINQ 查询。

场景:软删除、多租户。

什么是软删除?

逻辑删除,并不是真正地从数据库中把记录删除,而是通过特定的标记方式在查询的时候将此记录过滤掉。虽然数据在界面上已经看不见,但是数据库还是存在的。

用法

添加全局查询筛选器

在BookConfig中添加全局查询筛选器

builder.HasQueryFilter(b=>b.IsDeleted==false);

 运行代码,查询会自动加上全局查询条件

static async Task Main(string[] args)
{
    using (MyDbContext ctx = new MyDbContext())
    {
        foreach (var b in ctx.Books.Take(6))
        {
            Console.WriteLine($"{b.Id},{b.Price}");
        }
    }
}

禁用全局查询筛选器

用IgnoreQueryFilters()禁用全局查询筛选器

static async Task Main(string[] args)
{
    using (MyDbContext ctx = new MyDbContext())
    {
        foreach (var b in ctx.Books.IgnoreQueryFilters().Take(6))
        {
            Console.WriteLine($"{b.Id},{b.Price}");
        }
    }
}


原文地址:https://blog.csdn.net/Anoxia_li/article/details/145216645

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!