You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Z.EntityFramework.Plus中仅审计活跃的Customer实体?

如何用Z.EntityFramework.Plus仅审计活跃的Customer实体?

我正在使用Z.EntityFramework.Plus对数据库变更进行审计。为指定需要追踪的实体,原本采用了以下配置:

AuditManager.DefaultConfiguration.Exclude(x => true); // Exclude ALL
AuditManager.DefaultConfiguration.Include<Customer>();

通过上述代码,所有Customer类型的实体都会被审计。但现在我希望仅审计特定的客户,例如仅审计活跃客户,即仅对IsActive=true的Customer实体进行审计。我尝试使用了如下代码但无法生效:

AuditManager.DefaultConfiguration.Exclude(w => w.GetType() == typeof(Customer) && ((Customer)w).IsActive);

解决方案

你之前的代码逻辑有误——你写的条件是排除IsActive=true的Customer,和需求完全相反。另外Z.EntityFramework.Plus提供了更简洁的实体过滤方式,以下两种方案都能实现目标:

方式一:带过滤条件的Include(推荐)

直接在Include<Customer>时添加过滤表达式,仅纳入活跃客户:

AuditManager.DefaultConfiguration.Exclude(x => true); // 排除所有实体
AuditManager.DefaultConfiguration.Include<Customer>(c => c.IsActive);

方式二:修正Exclude条件

如果偏好通过Exclude实现,调整条件为排除非活跃的Customer即可:

AuditManager.DefaultConfiguration.Exclude(x => true); // 排除所有实体
AuditManager.DefaultConfiguration.Include<Customer>();
// 排除IsActive=false的Customer
AuditManager.DefaultConfiguration.Exclude(entity => entity is Customer customer && !customer.IsActive);

内容的提问来源于stack exchange,提问作者Luka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:37:22