gpt4 book ai didi

c# - NHibernate,使用带有 Future 的 QueryOver 获取孙子集合

转载 作者:太空狗 更新时间:2023-10-29 23:24:59 24 4
gpt4 key购买 nike

我正在尝试检索父实体的所有集合(非笛卡尔积),但无法弄清楚如何获取孙子实体。表结构如下:

enter image description here

以下代码获取我的父项及其 Child1 和 Child2 集合,以及其 ParentChild3 集合,但我不知道如何构造查询以获取 Child3 的孙子项(并将它们推迟到 Future())。

var parent = _session
.QueryOver<Parent>()
.Where(x => x.Id == id)
.Future<User>();

var children1 =_session
.QueryOver<Parent>()
.Where(x => x.Id == id)
.Fetch(x => x.Children1).Eager
.Future<Parent>();

var children2 =_session
.QueryOver<Parent>()
.Where(x => x.Id == id)
.Fetch(x => x.Children2).Eager
.Future<Parent>();

var parentChildren3 =_session
.QueryOver<Parent>()
.Where(x => x.Id == id)
.Fetch(x => x.ParentChildren3).Eager
.Future<Parent>();

// how to get children3, now?

return parent.SingleOrDefault();

半相关:这是获取所有集合的最佳方式吗?使用通过连接获取结果的查询是否更好(并且可能)?

最佳答案

如何获取 Children3:

ParentChildren alias = null;
var parentChildren3 =_session
.QueryOver<Parent>()
.Where(x => x.Id == id)
.JoinAlias(x => x.ParentChildren3, () => alias)
.Fetch(() => alias.Children3).Eager
.Future<Parent>();

半相关:这是我所知道的最好的方式。

如果 ParentChild 表没有额外的列,那么您可以将其映射为标准的多对多。届时 NHibernate 将不需要链接表的实体,并且预先获取将更容易。

关于c# - NHibernate,使用带有 Future 的 QueryOver 获取孙子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11677434/

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