分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

asp.net core 2.0 全局过滤(HasQueryFilter)

发布时间:2023-09-06 02:23责任编辑:郭大石关键词:暂无标签

  本文章主要是为了总结自己遇到的问题,同时也是别人的已经最哦好的成果。

  HasQueryFilter主要用于数据软删除,还习惯用delete的小伙伴,你们out了。。。

  首先设置一个基类,BaseEntity,包含IsDeleted属性:

  

  所有用到软删除的类继承于此类,然后在MyDbContext中的OnModelCreating方法中实现全局过滤:

  

  代码如下:

foreach (var entityType in modelBuilder.Model.GetEntityTypes() ???????????????.Where(e=>typeof(BaseEntity).IsAssignableFrom(e.ClrType))) ???????????{ ???????????????modelBuilder.Entity(entityType.ClrType).Property<bool>("IsDeleted"); ???????????????var parameter = Expression.Parameter(entityType.ClrType, "e"); ???????????????var body = Expression.Equal( ???????????????????Expression.Call(typeof(EF), nameof(EF.Property), new[] { typeof(bool) }, parameter, Expression.Constant("IsDeleted")), ???????????????????Expression.Constant(false)); ???????????????modelBuilder.Entity(entityType.ClrType).HasQueryFilter(Expression.Lambda(body, parameter)); ???????????}

  

   然后就是普通查询就ok了。。。

  过程解析可以查看大佬的博客:

  https://www.cnblogs.com/CreateMyself/p/8491058.html

asp.net core 2.0 全局过滤(HasQueryFilter)

原文地址:https://www.cnblogs.com/hany-sundigital/p/10011050.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved