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