我已经为此苦苦挣扎了一段时间,似乎无法弄清楚......
我有一个BlogPost
类,它有一个集合Comments
,并且每个评论都有一个DatePosted
field.
我需要做的是查询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
返回所有内容的表。
结果是Comments
的集合BlogPost
班级完全满了!
我究竟做错了什么?
如果有人需要更多信息,我有代码示例......!
为此有一个结果转换器,请参阅文档。 http://knol.google.com/k/fabio-maulo/nhibernate-chapter-13/1nr4enxv3dpeq/16#13%282E%294%282E%29%28C2%29%28A0%29Associations
Quote:
请注意,小猫收藏品
由返回的 Cat 实例
前两个查询不是
按标准预先过滤!如果你
希望只找回那些小猫
符合条件,您必须使用SetResultTransformer(CriteriaUtil.AliasToEntityMap)
.
IList cats =
sess.CreateCriteria(typeof(Cat))
.CreateCriteria("Kittens", "kt")
.Add( Expression.Eq("Name", "F%") )
.SetResultTransformer(CriteriaUtil.AliasToEntityMap)
.List();
您还可以使用通过以下方式激活的过滤器session.EnableFilter(name)
.
有一个类似的问题在这里 https://stackoverflow.com/questions/1164371/how-to-query-a-subproperty-with-nhibernates-criteria-api-and-the-entity-to-load/1165840.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)