LoadWith
используется для выполнения нетерпеливой нагрузки ассоциации в отличие от значения по умолчанию ленивая загрузка .
Обычно ассоциации загружаются при первом обращении к ним. Это означает, что если вы выбираете 100 Order
экземпляров, а затем что-то делаете с каждым из их Details
, вы фактически выполняете 101 SELECT
операций с базой данных. С другой стороны, если LoadOptions
указывает LoadWith<Order>(o => o.Details)
, то все это делается в одном SELECT
с добавленным JOIN
.
AssociateWith
не влияет на , когда ассоциация загружена, просто , что загружено. Он добавляет выражение WHERE
каждый раз, когда вы загружаете ассоциацию.
Как вы говорите, AssociateWith
используется для автоматической фильтрации данных. Обычно вы используете это, если знаете, что в ассоциации очень большое количество элементов, и вам нужно только определенное их подмножество. Опять же, это в основном оптимизация производительности, просто другой вид.