Я пытаюсь создать динамическую проекцию с Entity Framework 6, но пока мне не удалось.В зависимости от определенных условий я хочу включить или исключить определенные данные в результате проецирования.
Вот что будет работать:
Dim carQueryable = currentContext.Car.Include("ModellVariant.Modell.Make")
if (includeEquipment) then
return carQueryable.
Select(Function(car) New CarFlatRecord With{
.Fahrzeug = car,
.ModellVariant = car.ModellVariant,
.Modell = car.ModellVariant.Modell,
.Make = car.ModellVariant.Modell.Make,
.Equipment = car.Equiptment
} )
ELSE
return carQueryable.
Select(Function(car) New CarFlatRecord With{
.Fahrzeug = car,
.ModellVariant = car.ModellVariant,
.Modell = car.ModellVariant.Modell,
.Make = car.ModellVariant.Modell.Make} )
END IF
Моя проблема в том, что у меня уже есть три бинарных условия, аналогичныхincludeEquipment.Таким образом, простое решение if / then уже потребовало бы 8 различных путей.Я рассматривал Expressions как решение, но кажется, что EF не способен обрабатывать любые сложные сценарии.
Я пытался работать с if()
в предложении with, и это дает правильно заполненный вывод, но в SQLтаблицы все еще объединены (что является моей главной проблемой, которую я хочу избежать).
(Ответы в c # и vb приветствуются, поэтому я добавил теги)