loadwith和associatewith之间有什么区别。从我阅读的文章看来,loadwith似乎用于加载附加数据(例如,客户的所有订单)。而AssociateWith用于过滤数据。
这是正确的理解吗?如果有人可以用基于示例的解释来解释这一点,那也将是很好的。
最佳答案
LoadWith
用于执行关联的急切加载,而不是默认的懒加载。
通常,关联是在您第一次引用它们时加载的。这意味着,如果选择100个Order
实例,然后对它们的每个Details
进行操作,则实际上是对数据库执行101个SELECT
操作。另一方面,如果LoadOptions
指定LoadWith<Order>(o => o.Details)
,那么所有操作都将在单个SELECT
中完成,并添加JOIN
。
加载关联的时,AssociateWith
对没有任何影响,只是加载了什么。每次加载关联时,它都会添加WHERE
子句。
如您所说,AssociateWith
用于自动过滤数据。通常,如果您知道某个关联具有大量元素并且只需要它们的特定子集,就可以使用此功能。同样,它主要是性能优化,只是一种优化。