在 Linq2Sql 中提前加载实体

发布于 2024-09-12 14:45:56 字数 592 浏览 7 评论 0原文

我正在尝试使用 LoadWith 和 AssociateWith DataLoadOptions 急切地加载实体及其相关属性(基本一对多)。然而,在查看生成的 SQL 后,我发现 LoadWith 生成的语句都是左外连接。

因此,下面的代码生成所有左外连接以获取关联属性的数据。这是为什么?有没有办法让 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"))


I’m trying to eagerly load an entity and its related properties (basic one to many) using the LoadWith and AssociateWith DataLoadOptions. However, after looking at the generated SQL I noticed that the statements generated by LoadWith are all Left Outer Joins.

So the code below generates all left outer joins to fetch the data of the associated properties. Why is that? And is there any way to get LoadWith to generate inner joins instead. I know I can do this with a simple “Linq join”, however, I like how clean and simple the LoadWith syntax is. Thanks in advance

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"))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遗心遗梦遗幸福 2024-09-19 14:45:56

所有具有英文产品翻译的客户订单

dataLoadOptions.AssociateWith<TCustomer>(c => c.Orders
  .Where(o => o.Products
      .SelectMany(p => p.ProductTranslations)
      .Any(pt => pt.Language == "En")
  )
);

all Customer's orders for which an English product translation exists

dataLoadOptions.AssociateWith<TCustomer>(c => c.Orders
  .Where(o => o.Products
      .SelectMany(p => p.ProductTranslations)
      .Any(pt => pt.Language == "En")
  )
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文