NHibernate Linq 提供程序中的 Fetch 与 FetchMany

Posted

技术标签:

【中文标题】NHibernate Linq 提供程序中的 Fetch 与 FetchMany【英文标题】:Fetch vs FetchMany in NHibernate Linq provider 【发布时间】:2011-05-22 15:15:37 【问题描述】:

可以使用 FetchFetchMany 完成 NHibernate 急切加载,如 Mike Hadlow 博客上的 NHibernate Linq Eager Fetching 所述。

这两种方法有什么区别,分别在什么情况下使用?

【问题讨论】:

【参考方案1】:

Fetch 应该用于引用,FetchMany 应该用于集合。

这一点尤其重要,因为只有 FetchMany 可以与 ThenFetchMany 组合来获取“孙子”集合。

例子:

session.Query<User>()
       .FetchMany(u => u.Orders)
       .ThenFetchMany(o => o.OrderItems)

【讨论】:

如果您以后不打算调用 ThenFetch(),对集合使用 Fetch() 会不会有问题? @Diego Mijelshon 因为 Fetch 和 FetchMany 都有效,有什么区别? @hardywang:可以将它们链接起来以获取更多关卡的方式。只需查看方法签名。

以上是关于NHibernate Linq 提供程序中的 Fetch 与 FetchMany的主要内容,如果未能解决你的问题,请参考以下文章