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

  • 相关阅读:
    ios arc __strong与__weak的一个小实例
    ObjectiveC block详解
    网站开发中JS中的常用语句
    js数组的操作
    sql常用语句
    复制myeclipse工程,注意事项
    JSP入门代码
    传智播客——struts2添加request/session/application属性
    WEB 开发前传——js笔记
    jdbc初步(转)
  • 原文地址:https://www.cnblogs.com/hany-sundigital/p/10011050.html
Copyright © 2011-2022 走看看