我创建了一个界面来尝试进行软删除,混合阴影属性和查询过滤器.但它不起作用.
public interface IDeletableEntity {}
Run Code Online (Sandbox Code Playgroud)
然后在我的模型构建器中
builder.Model.GetEntityTypes()
.Where(entityType => typeof(IDeletableEntity).IsAssignableFrom(entityType.ClrType))
.ToList()
.ForEach(entityType =>
{
builder.Entity(entityType.ClrType).Property<Boolean>("IsDeleted");
builder.Entity(entityType.ClrType).HasQueryFilter(e => EF.Property<Boolean>(e, "IsDeleted") == false);
});
Run Code Online (Sandbox Code Playgroud)
但是查询过滤器的行不能编译.我得到的错误是"无法将lambda表达式转换为'lambda表达式',因为它不是委托类型"
如果我这样做它就会起作用.
builder.Entity<MyEntity>().HasQueryFilter(m => EF.Property<Boolean>(m, "IsDeleted") == false);
Run Code Online (Sandbox Code Playgroud)
有什么方法可以做到这一点?这是为了在每个我想使用软删除实体的实体中都有一个IDeletableEntity接口而不必这样做
提前谢谢了,