Я пытаюсь сделать что-то, что казалось бы очень простым. Я хочу запросить все типы в таблице для каждой иерархии, кроме одного типа. Это должно выполняться как один (постраничный) запрос к базе данных.
Чтобы вернуть один тип, я могу вызвать IQueryable<T>.OfType<T>()
. Я не вижу способа передать подмножество типов. Насколько я знаю, Дискриминатор не может быть представлен как свойство модели, поэтому я не могу фильтровать с помощью любого вызова Where(x => x.Discriminator != value)
.
Кто-то предложил что-то вроде IQueryable<T>.Where(x => x is Type1 || x is Type2 || x is Type3)
, но я помню, что такая структура работает неправильно. Кто-то также предложил использовать OfType
для каждого типа, к которому присоединяются вызовы Union
, но я думаю, что это приведет к менее эффективному запросу, чем необходимо, когда я пытаюсь отфильтровать один тип из многих типов (например, исключить только 1 из 20 типов, используя 18). союзы).
Есть ли известный способ выполнить такой запрос, который мне не хватает?