gpt4 book ai didi

c# - 使用 NHibernate 部分填充子集合

转载 作者:太空狗 更新时间:2023-10-29 21:56:03 25 4
gpt4 key购买 nike

我已经为此苦苦挣扎了一段时间,似乎无法弄清楚...

我有一个 BlogPost 类,它有一个 Comments 集合,每个评论都有一个 DatePosted 字段。

我需要做的是查询一个 BlogPost 并用部分加载的 Comments 集合返回它,假设所有评论都是在 2009 年 8 月 1 日发布的。

我有这个查询:

BlogPost post = session.CreateCriteria<BlogPost>()
.Add(Restrictions.Eq("Id", 1))
.CreateAlias("Comments", "c")
.Add(Restrictions.Eq("c.DatePosted", new DateTime(2009, 8, 1)))
.UniqueResult<BlogPost>();

当我运行此查询并检查生成的 sql 时,它首先对 BlogPost 表运行查询,并加入具有正确日期限制的 Comment 表,然后仅对返回所有内容的 Comment 表运行第二个查询。

结果是 BlogPost 类的 Comments 集合完全填满了!

我做错了什么?

如果有人需要更多信息,我有代码示例...!

最佳答案

为此有一个结果转换器,请参阅 the documentation.

引用:

Note that the kittens collections held by the Cat instances returned by the previous two queries are not pre-filtered by the criteria! If you wish to retrieve just the kittens that match the criteria, you must use SetResultTransformer(CriteriaUtil.AliasToEntityMap).

IList cats =
sess.CreateCriteria(typeof(Cat))
.CreateCriteria("Kittens", "kt")
.Add( Expression.Eq("Name", "F%") )
.SetResultTransformer(CriteriaUtil.AliasToEntityMap)
.List();

您还可以使用通过 session.EnableFilter(name) 激活的过滤器。

有一个similar question here .

关于c# - 使用 NHibernate 部分填充子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1244995/

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