cbp*_*cbp 9 nhibernate fetching-strategy
我正在尝试使用选择急切地获取集合,但我得到的只是内部联接.到底是怎么回事?
Session.CreateCriteria(typeof(Foo))
.SetFetchMode("Bars", FetchMode.Select)
.CreateAlias("Bars", "b")
.SetFetchMode("b.Bazes", FetchMode.Select)
.List();
Run Code Online (Sandbox Code Playgroud)
我已经尝试将FetchMode更改为Eager但这不起作用 - 我仍然得到内部联接而不是单独选择.我不知道它从哪里获得内部连接,因为文档中没有任何内容涉及FetchMode导致内部连接.是否有可能获得热切的选择?
更新 确定我发现创建别名会导致内部联接.所以我可以使用.CreateAlias("Bars","b",JoinType.None),但随后b.Bazes的获取将恢复为延迟加载.Urgh.
INNER JOIN 是 NHibernate 加载记录及其相关子记录的方式。这通常是最有效的方法。
如果要使用多个 SELECT 语句,则对子项的查询将需要以某种方式包含父项的条件。INNER JOIN 可以轻松获取相关子项,NHibernate 在运行查询后会正确地将其拆分为多个实体。
我相信 Entity Framework 4 会让您执行多个查询并“神奇地”重新附加相关对象,但我不知道 NHibernate 有这样的功能(我确信如果我在这方面错了,有人会纠正我) 。
| 归档时间: |
|
| 查看次数: |
4399 次 |
| 最近记录: |