Каков наилучший способ обновить все связанные сущности при работе с Queryfilter?
Все мои сущности наследуются от базового класса со свойством IsDeleted.
Когда я создаю свой контекст, я использую
if (table.GetProperties().Any(column => column.ClrType == typeof(bool) && column.Name == "IsDeleted"))
{
var parameter = Expression.Parameter(table.ClrType);
var propertyMethodInfo = typeof(EF).GetMethod("Property").MakeGenericMethod(typeof(bool));
var isDeletedProperty = Expression.Call(propertyMethodInfo, parameter, Expression.Constant("IsDeleted"));
BinaryExpression compareExpression = Expression.MakeBinary(ExpressionType.Equal, isDeletedProperty, Expression.Constant(false));
var lambda = Expression.Lambda(compareExpression, parameter);
builder.Entity(table.ClrType).HasQueryFilter(lambda);
}
фильтр HasQuery для игнорирования всех удаленных сущностей.SoftDelete.
Когда я пытаюсь обновить все свои коллекции, я получаю только фильтрованные коллекции.Поэтому никогда не возможно обновить мое свойство IsDelete истинным значением.
if (entry.State == EntityState.Modified)
{
foreach (var collectionEntry in _context.Entry(dbMember).Collections)
{
await collectionEntry.LoadAsync();
foreach (var o in collectionEntry.CurrentValue)
{
var entity = o as BaseEntity;
entity.IsDeleted = dbMember.IsDeleted;
}
}
}
Мне нужно что-то вроде
await collectionEntry.LoadAsync (). IgnoreQueryFilters ().