ABP框架中数据过滤器与数据传输对象如何高效结合使用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4260个文字,预计阅读时间需要18分钟。
数据过滤器(Data filters)在数据库开发中,我们通常采用软删除(soft-delete)模式,即不直接从数据库删除数据,而是标记数据为已删除。因此,如果实体被软删除,那么它就不应该出现在查询结果中。
数据过滤器(Data filters)
在数据库开发中,我们一般会运用软删除(soft-delete)模式,即不直接从数据库删除数据,而是标记这笔数据为已删除。因此,如果实体被软删除了,那么它就应该不会在应用程序中被检索到。要达到这种效果,我们需要在每次检索实体的查询语句上添加SQL的Where条件IsDeleted = false。这是个乏味的工作,但它是个容易被忘掉的事情。因此,我们应该要有个自动的机制来处理这些问题。
ABP提供数据过滤器(Data filters),它使用自动化的,基于规则的过滤查询。ABP已经有一些预定义的过滤器,当然也可以自行创建你专属的过滤器。
注意:只针对EntityFramework:ABP数据过滤器仅实现在EntityFramework。还无法在其它ORM工具中使用。见其它ORM章节于本文末端。
预定义过滤器
1.软删除接口(ISoftDelete)
软删除过滤器(Soft-delete filter )会过滤从数据库查询出来的实体且是自动套用(从结果集中提取出来)。如果实体需要被软删除,它需要实现ISoftDelete接口,该接口仅定义了一个IsDeleted属性。例:
public class Person : Entity, ISoftDelete { public virtual string Name { get; set; } public virtual bool IsDeleted { get; set; } }
Person实体实际上并没有从数据库中被删除,当删除此实体时,IsDeleted属性值会被设定为true。
本文共计4260个文字,预计阅读时间需要18分钟。
数据过滤器(Data filters)在数据库开发中,我们通常采用软删除(soft-delete)模式,即不直接从数据库删除数据,而是标记数据为已删除。因此,如果实体被软删除,那么它就不应该出现在查询结果中。
数据过滤器(Data filters)
在数据库开发中,我们一般会运用软删除(soft-delete)模式,即不直接从数据库删除数据,而是标记这笔数据为已删除。因此,如果实体被软删除了,那么它就应该不会在应用程序中被检索到。要达到这种效果,我们需要在每次检索实体的查询语句上添加SQL的Where条件IsDeleted = false。这是个乏味的工作,但它是个容易被忘掉的事情。因此,我们应该要有个自动的机制来处理这些问题。
ABP提供数据过滤器(Data filters),它使用自动化的,基于规则的过滤查询。ABP已经有一些预定义的过滤器,当然也可以自行创建你专属的过滤器。
注意:只针对EntityFramework:ABP数据过滤器仅实现在EntityFramework。还无法在其它ORM工具中使用。见其它ORM章节于本文末端。
预定义过滤器
1.软删除接口(ISoftDelete)
软删除过滤器(Soft-delete filter )会过滤从数据库查询出来的实体且是自动套用(从结果集中提取出来)。如果实体需要被软删除,它需要实现ISoftDelete接口,该接口仅定义了一个IsDeleted属性。例:
public class Person : Entity, ISoftDelete { public virtual string Name { get; set; } public virtual bool IsDeleted { get; set; } }
Person实体实际上并没有从数据库中被删除,当删除此实体时,IsDeleted属性值会被设定为true。

