我有一个Person表,其中有许多字段是其他表中的外键
所以我必须做出选择:
References(x => x.Field1).Fetch.Join();
References(x => x.Field2).Nullable().Fetch.Join();
References(x => x.Field3).Nullable().Fetch.Join();
References(x => x.Field4).Nullable().Fetch.Join();
或
References(x => x.Field1).Fetch.Select();
References(x => x.Field2).Nullable().Fetch.Select();
References(x => x.Field3).Nullable().Fetch.Select();
References(x => x.Field4).Nullable().Fetch.Select();
我看到第一个将对所有其他表进行外连接,而第二个不会。我正在使用nhibernate探查器运行测试,但我试图获得一个经验法则或最佳实践,当你应该使用Fetch.Select()(在网络上找不到很多)。
我假设我想要在Field2表中访问所有条目的另一个字段我最好先进行前期连接,如果我可能没有从这些关联表中访问数据来执行第二次
在这个我错过的决定中还有其他因素可以发挥作用吗?
答案 0 :(得分:5)
将该决定延迟到用例,因为它有更多的上下文,每个用例都有其他要求。所以:
Join()
,例如多态引用或始终需要引用Fetch(x => x.Fieldx).Eager
以显式特定用例的负载