EF не загружает отношения автоматически по умолчанию, так как для этого потребуются соединения SQL, что нежелательно в большинстве сценариев - только если вы на самом деле хотели получить связанные данные.
В результате у вас есть два варианта: быстро загружать отношения, используя Include
, или полагаться на отложенную загрузку, чтобы запрашивать связанные данные, как раз вовремя, когда к ним обращаются. Ленивая загрузка не включена по умолчанию, потому что, честно говоря, это немного против паттерна, и вы не должны использовать его, если вы хорошо осведомлены о последствиях и возможных проблемах.
В этом конкретном сценарии эти возможные проблемы могут быстро и драматично поднять их уродливые головы. Так как вы сериализуете сущность, сериализатор будет касаться каждого отношения, вызывая индивидуальный запрос, чтобы получить этот конкретный набор связанных данных. Это будет происходить также для каждого блога, который вы просматриваете. И если бы у какого-либо из связанных предметов были связанные вещи сами, вы бы выдавали экспоненциальное количество дополнительных запросов. Короче говоря, ленивая загрузка чего-то подобного может привести к сотням, если не тысячам или более запросов, выдаваемых одновременно - не то, что вы хотите, чтобы происходило, мягко говоря.
Короче говоря, вам нужно , чтобы охотно загрузить отношения, которые вас интересуют, независимо от того, предпочитаете ли вы этот подход или нет. Здесь нет бесплатного обеда. Это либо один запрос со всеми объединениями одновременно, либо тонны запросов для каждого фрагмента данных отдельно.
В качестве альтернативы, вы можете рассмотреть возможность использования чего-то вроде OData или GraphQL. Это само по себе не решает проблему: по умолчанию связанные элементы не будут включены. Тем не менее, оба из них предоставляют возможность запрашивать связанные данные как часть запроса, позволяя клиенту извлекать только те отношения, которые ему нужны или в которых они заинтересованы. Это решает вашу проблему нежелания указывать и запрашивать каждую отдельную связь одновременно. , в то же время предоставляя клиенту простой способ получить его, если ему это нужно / нужно.