小编Sam*_*oOo的帖子

EF Core:使用阴影属性和查询过滤器进行软删除

我创建了一个界面来尝试进行软删除,混合阴影属性和查询过滤器.但它不起作用.

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接口而不必这样做

提前谢谢了,

c# entity-framework ef-core-2.0

9
推荐指数
2
解决办法
1491
查看次数

标签 统计

c# ×1

ef-core-2.0 ×1

entity-framework ×1