EF Core: Soft delete with shadow properties and query filters

后端 未结 5 1031
旧时难觅i
旧时难觅i 2020-12-03 05:47

I\'ve created an interface to try to do a soft delete, mixing shadow properties and query filters. But it\'s not working.

public interface IDeletableEntity {         


        
5条回答
  •  眼角桃花
    2020-12-03 06:14

    What I did was

    builder.Model.GetEntityTypes()
               .Where(p => typeof(IDeletableEntity).IsAssignableFrom(p.ClrType))
               .ToList()
                .ForEach(entityType =>
                {
                    builder.Entity(entityType.ClrType)
                    .HasQueryFilter(ConvertFilterExpression(e => !e.IsDeleted, entityType.ClrType));
                });
    

    and

     private static LambdaExpression ConvertFilterExpression(
                    Expression> filterExpression,
                    Type entityType)
        {
            var newParam = Expression.Parameter(entityType);
            var newBody = ReplacingExpressionVisitor.Replace(filterExpression.Parameters.Single(), newParam, filterExpression.Body);
    
            return Expression.Lambda(newBody, newParam);
        }
    

提交回复
热议问题