zoukankan      html  css  js  c++  java
  • asp.net core 2.0 全局过滤(HasQueryFilter)

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

      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

  • 相关阅读:
    【Python爬虫】:模拟登录QQ空间
    Docker
    Git
    DevOps
    DevOps
    gRPC 简介
    tcpdump的使用
    Raft
    go-micro 简介
    Node
  • 原文地址:https://www.cnblogs.com/hany-sundigital/p/10011050.html
Copyright © 2011-2022 走看看