У меня возникает ситуация, когда мне приходится загружать данные из нескольких таблиц в один объект, то есть у меня есть отдельные таблицы для BasicProperties
и несколько видов «продвинутых» свойств (мне не разрешено рефакторинг либо базы данных, либо объектной модели).Дополнительное соединение с Entity Framework
Однако, поскольку загрузка расширенных свойств является дорогостоящей и ненужной в большинстве случаев, я хочу опустить ее, если явно не указано.
То, что я в настоящее время есть что-то вроде:
from basics in ctx.Basics
join numerics in ctx.Numerics on basics.ID equals numerics.ItemID
join alphas in ctx.Alphas on basics.ID equals alphas.Itemid
join cplx in ctx.Complex on basics.ID equals cplx.Itemid into complex
select new HodgePodge
{
Basics = basics,
Numerics = numerics,
Alphas = alpha,
Complex = complex
};
так что мне нужно немного (легкий) способ включить/исключить загрузку таблиц базы данных в Numerics
, Alphas
и Complex
.
В принципе, я являюсь «гостем» в этом проекте, пытаясь оптимизировать код загрузки, поэтому мне не разрешается слишком сильно менять код, а производительность наихудшего случая должна оставаться по крайней мере одинаковой.
Вы должны иметь свойства навигации определены (если некоторые из этих объединений не относятся к представлениям, это не всегда возможно), которые позаботятся об этом через ленивую загрузку - вам действительно придется явно загружать связанные объекты. –
Почему вы не строите свой запрос динамически в зависимости от вашего состояния? (например, включить объединение в случае advancePropertiesRequired). Или просто два запроса по одному для каждой стороны условия. –
@ PatrykĆwiek, нет, никаких свойств навигации для типа ('HodgePodge'), который мне нужно загрузить (и не могу их добавить) – SWeko