EFCore 使用FluntApi配置 全局查询筛选器

这篇具有很好参考价值的文章主要介绍了EFCore 使用FluntApi配置 全局查询筛选器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在类中通常会有一个属性为 IsDel来表示软删除或也称逻辑删除,这个属性会导致我们在进行查询操作时,每一次都要 .where(s=>s.IsDel==false) 非常的麻烦。在使用efCore时可以通过配置查询筛选器来很好的解决这个问题。

public class SysUser
{
    public long Id { get; set; }
    public bool IsDel { get; set; } = false;
    public DateTime CreateTime { get; set; }
}

我们SysUser类中的IsDel属性代表我们的软删除。

我这里自己的DbContext类名叫MyDbContext

public class MyDbContext:DbContext

在MyDbContext中重写OnModelCreating方法来对SysUser类进行配置查询筛选器

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<SysUser>().HasQueryFilter(u => u.IsDel == false);
}

但是由于我们项目中会有很多的实体类所以都写在这里有些臃肿。
我们可以新建EntityBase文件夹或者项目(具体怎么样看个人习惯),我这里就新建了文件夹。
在文件夹中新建类,实现IEntityTypeConfiguration<TEntity>接口,来对实体类进行配置

 public class SysUserEntityConfig : IEntityTypeConfiguration<SysUser>
 {
     public void Configure(EntityTypeBuilder<SysUser> builder)
     {
         builder.HasQueryFilter(u => u.IsDel == false);
     }
 }

然后在OnModelCreating方法中,通过 modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly) 方法从当前类所在的程序集中自动应用所有实现了 IEntityTypeConfiguration<TEntity> 接口的实体配置类。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
}

如果不在同一个程序集,可以使用这种方法

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    var assembly = Assembly.Load("EntityConfigurations(这里要换成自己实际的程序集)");
    modelBuilder.ApplyConfigurationsFromAssembly(assembly);
}

通过这种方式我们就可以在使用efCore时实现全局查询筛选了。文章来源地址https://www.toymoban.com/news/detail-742798.html

到了这里,关于EFCore 使用FluntApi配置 全局查询筛选器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Avalonia 使用EFCore调用SQLite实现Singleton全局注册

    本篇博客是我的开源项目TerraMours.Chat.Ava的更新的记录分享,本次更新使用 EntityFrameWork Core 调用SQLite,实现数据的本地化和查询的优化,删除了 dbpross 类(直接调用SQLite的操作类)。大大提高了代码的简洁度和易读性。通过全局注册的 ChatDbcontext 对象,是操作数据库变的非常

    2024年02月16日
    浏览(35)
  • Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入

    要从MySQL中的表格中选择数据,请使用\\\"SELECT\\\"语句: 示例选择\\\"customers\\\"表格中的所有记录,并显示结果: 注意 :我们使用 fetchall() 方法,该方法从上次执行的语句中获取所有行。 要仅选择表格中的某些列,请使用\\\"SELECT\\\"语句,后跟列名: 示例仅选择name和address列: 如果您只对

    2024年02月05日
    浏览(95)
  • EFCore 从入门到精通-6(详谈查询)

    1.初始准备 1.1 工具准备 1.2 程序准备 按照上一个项目,创建相关的实体类和EFLearnDbContext,修改EFLearnDbContext的内容,这里介绍下简单的配置。 1.3 准备数据 准备一下数据,在Program里如下添加这些基础数据,运行后注释下面的代码。 2.基础回顾以及探寻 2.1 单个查询 单个查询,

    2024年02月04日
    浏览(39)
  • ASP.Net Core Web Api+EFCore+MySql实现动态查询(保姆教学)

    本文会详细讲解如何从打开文件到第一个API开发完成,过程十分详细,是基于学习入门。 现在让我们开始吧! 打开VS(演示用的Visual Studio2022) 第一步我们选择创建新项目   第二步 选择开发语言以及应用程序 我们选择C# -所有平台-Web API.找到 ASP.NET Core Web API 应用   这里应用

    2024年02月12日
    浏览(43)
  • Hbase 查询命令 条件筛选

    Hbase 查询命令 条件筛选 方便测试 建一下表 不写namespace的话就是默认在default里 查询有哪些namespace 查看表的全量数据 放入一些测试数据 只查询一行 查询表的总记录数 按写入的时间戳查询数据 查询值为1002的记录 查询c1:id列的值为1002的 查询值包含100的记录,就跟sql的模糊匹配

    2023年04月08日
    浏览(38)
  • C#中DataTable实现筛选查询

    2024年02月15日
    浏览(37)
  • 简明SQL条件查询指南:掌握WHERE实现数据筛选

    条件查询是用于从数据库中根据特定条件筛选数据行的一种方式,它避免了检索整个表中的数据。通常,使用 WHERE 子句来定义过滤条件,只有符合这些条件的数据行才会被返回。 SQL中的运算符有:=、!=、、 等,用于进行条件判断。 在逻辑运算中,常见的运算符包括: and:

    2024年02月09日
    浏览(70)
  • EFCore-12 一对一关系配置

    商品订单和快递单的关系,一般情况下是一对一的,在网上购买商品下一个订单,这个订单会生成一个对应的快递单。如下图所示: 新建一个控制台应用程序 控制台项目结构: 项目引用的程序集: Microsoft.EntityFrameworkCore.SqlServer  Microsoft.EntityFrameworkCore.Tools    1.在实体类中

    2024年02月06日
    浏览(39)
  • EFCore-13 多对多关系配置

    学生与老师的关系,是一个常见的多对多的关系模型,一个老师有多个学生,一个学生也可能有多个老师。关系模型图如下所示: 学生1的老师为老师1、老师2 学生2的老师为老师2、老师3 学生3的老师为老师1、老师2、老师3 下面用程序实现这样的关系模型。 新建一个控制台应

    2024年02月12日
    浏览(42)
  • 极兔速递单号查询入口,根据物流更新量来筛选单号

    在处理大量快递单号时,我们常常会遇到这样的困扰:信息混乱、查询困难、管理不便。而【快递批量查询高手】就是针对这些问题设计的,它可以根据你的实际需求,按照各种条件来进行筛选,比如更新量、派件员、发出物流时间等,轻松帮你筛选出需要的单号。 所需工具

    2024年01月23日
    浏览(132)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包