【发布时间】:2017-07-14 07:07:51
【问题描述】:
我正在尝试在 EF Core 2.0 中使用软删除行为。
public interface ISoftDeleteModel
{
bool IsDeleted { get; set; }
}
创建正确的列和软删除工作正常,但从 DbContext 过滤实体却不行。
我想在上下文中使用查询过滤,但我卡住了。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
Type entityType;
// ^^^ it contains type of entity, eg. Blog, Post, etc. using
// modelBuilder.Model.GetEntityTypes().First().Name and converting to Type
var entity = modelBuilder.Entity(entityType);
if(entityType.GetInterface("ISoftDeleteModel") != null)
{
// ??? how to access IsDeleted property ???
entity.HasQueryFilter(x => !x.IsDeleted);
}
}
问题很简单——如何访问 IsDeleted 属性?
如果我知道实体的类型,例如。 Post 和 Post 实现了 ISoftDeleteModel 我可以这样做:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>().HasQueryFilter(x => !x.IsDeleted);
}
但我不知道类型。我正在尝试实现简单的事情-实现此接口的所有模型都将被自动过滤。我错过了什么吗?
【问题讨论】:
标签: c# entity-framework .net-core entity-framework-core