Загрузить связанные данные с IgnoreQueryFilter - PullRequest
0 голосов
/ 21 мая 2018

Каков наилучший способ обновить все связанные сущности при работе с 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 ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...