限制急切获取的集合
我怎样才能急切地获取一个集合,但只获取前 N 个项目?
使用此代码是可行的,但是有没有“官方方法”来实现这一点?
public Gallery GetById(int id)
{
var session = GetSession();
var criteria = session.CreateCriteria<Gallery>()
.Add(Expression.Eq("Id", id))
.SetFetchMode("Pictures", FetchMode.Eager)
.CreateAlias("Pictures", "p")
.SetFirstResult(0)
.SetMaxResults(24)
;
return criteria.UniqueResult<Gallery>();
}
在本例中,我限制了 Gallery
的结果,这无论如何都是唯一的结果,但我想限制 Pictures
的结果。
How can I eagerly fetch a collection, but just the N first items?
Using this code works, but is there an 'official way' to achieve that?
public Gallery GetById(int id)
{
var session = GetSession();
var criteria = session.CreateCriteria<Gallery>()
.Add(Expression.Eq("Id", id))
.SetFetchMode("Pictures", FetchMode.Eager)
.CreateAlias("Pictures", "p")
.SetFirstResult(0)
.SetMaxResults(24)
;
return criteria.UniqueResult<Gallery>();
}
In this case, I'm bounding the results of Gallery
, which is anyway unique result, but I want to bound the results of Pictures
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的代码工作正常,并且完全可以接受。如果您想要始终急切地获取,您可以在表映射配置中进行设置(HBM、Fluent 或您使用的任何解决方案),然后明确告诉它不要在以下情况下这样做:你不想急切地去取。两种方式都可以正常工作并且可以接受。对于您的项目需求和团队的编码风格,请使用更方便或更安全的方式。
Your code works correctly, and is perfectly acceptable. If you want to always eagerly fetch, you can set it as such in your table mapping configuration (HBM, Fluent, or with whatever solution you use), and then explicitly tell it not to for the cases where you don't want to eagerly fetch. Both ways work fine and are acceptable. Use whichever is more convenient or safe for your project needs and team's coding style.