我正在尝试使用LoadWith和AssociateWith DataLoadOptions急切地加载实体及其相关属性(基本的一对多)。但是,在查看生成的SQL之后,我注意到LoadWith生成的语句都是Left Outer Joins。
因此,下面的代码生成所有左外连接以获取相关属性的数据。这是为什么?有没有办法让LoadWith生成内部联接。我知道我可以用一个简单的“Linq join”来做到这一点,但是,我喜欢LoadWith语法的简洁和简单。提前致谢
dataLoadOptions.LoadWith(Of TCustomer)(Function(c) c.Orders)
dataLoadOptions.LoadWith(Of TOrder)(Function(o) o.Products)
dataLoadOptions.LoadWith(Of TProduct)(Function(p) p.ProductTranslations)
dataLoadOptions.AssociateWith(Of TProduct)(Function(c) c.ProductTranslations.Where(Function(t) t.Language = "En"))
答案 0 :(得分:0)
所有客户的订单,其中存在英语产品翻译
dataLoadOptions.AssociateWith<TCustomer>(c => c.Orders
.Where(o => o.Products
.SelectMany(p => p.ProductTranslations)
.Any(pt => pt.Language == "En")
)
);