Фильтр из мягких удалений из набора DBContext ()
-
29-10-2019 - |
Вопрос
Как я могу отфильтровать элементы сгенерированного кода кода из этого DbSet?
родовое словоМетод
родовое словоМодель
родовое словоРЕДАКТИРОВАТЬ: забыл показать, что код сгенерированного кода является производным от кода сгенерированного кода
Решение
У вашего класса Wither нет свойства IsSoftDeleted, поэтому фильтровать нечего. Я предполагаю, что все, что унаследовано от BaseEntity.
Основная проблема в том, что IQueryable
Вы можете преобразовать DbSet в IQueryable
Примечание: это не то же самое, что и использование dbContext.Set (type) .Cast
Другие советы
Проблема в том, что Set(Type type)
возвращает неуниверсальный код DbSet
.Чтобы применить фильтр, вы должны преобразовать его в общий код-код-тега:
Это работает только в том случае, если IQueryable<T>
является производным от type
или самого BaseEntity
, в противном случае вы получите исключение времени выполнения.
Результирующий код BaseEntity
относится к типу set
, поэтому возникает вопрос, насколько полезен этот результат и как можно применить дополнительные фильтры к производным объектам, таким как IQueryable<BaseEntity>
.По крайней мере, я не мог получить компилируемый код, сделав Where(w => w.Name == "abc")
типа set
.Я также не хотел бы терять строгую типизацию.