gpt4 book ai didi

nhibernate - 使用 nhibernate(和 queryover)急切地获取多个嵌套关联

转载 作者:行者123 更新时间:2023-12-02 05:10:33 25 4
gpt4 key购买 nike

我有一个包含多个嵌套关联的数据库。基本上,结构如下:

Order -> OrderItem -> OrderItemPlaylist -> OrderPlaylistItem -> Track -> Artist

我需要根据在特定日期售出的所有订单生成一个报告,该报告需要遍历所有提到的关联以生成所需的信息。

尝试将所有表连接在一起将是一种矫枉过正,因为考虑到它将 6 个表连接在一起,这将导致非常大的笛卡尔连接和许多冗余数据。代码如下:

q.Left.JoinQueryOver<OrderItem>(order => order.OrderItems)
.Left.JoinQueryOver<OrderItemPlaylist>(orderItem => orderItem.Playlist)
.Left.JoinQueryOver<OrderItemPlaylistItem>(orderItemPlaylist => orderItemPlaylist.PlaylistItems)
.Left.JoinQueryOver<Track>(orderItemPlaylistItem => orderItemPlaylistItem.Track)
.Left.JoinQueryOver<Artist>(track => track.Artist)

上述方法有效,但即使有几个订单,每个订单都有几个订单项,每个播放列表都包含多个轨道,结果会激增至数千条记录,并随着每个额外订单呈指数级增长。

知道最好和最有效的方法是什么吗?我目前已经尝试启用批加载,这大大减少了数据库查询的数量,但在我看来仍然不是一个好方法,而更像是一个“简单的解决方法”。

鉴于数据量巨大,没有必要在一个 SQL 查询中加载所有数据。我想每个关联的一个 SQL 查询将是完美的。理想情况下,首先获取所有订单,然后获取订单的所有订单项并将它们加载到关联的集合中,然后是每个订单项的播放列表,依此类推。

此外,这不必专门在 QueryOver 中,因为我可以访问 .RootCriteria 并使用 Criteria API。

任何帮助将不胜感激!

最佳答案

关于nhibernate - 使用 nhibernate(和 queryover)急切地获取多个嵌套关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com