gpt4 book ai didi

nhibernate - Fetch.Join() 在 Fluent NHibernate 中不起作用

转载 作者:行者123 更新时间:2023-12-03 06:53:36 25 4
gpt4 key购买 nike

我在关系的一侧有以下映射覆盖:

public void Override(AutoMapping<ItemAsmtDetailDh> mapping)
{
mapping.HasMany<WAsmtDetail>(x => x.WAsmtDetails).Inverse().AsBag().Cascade.AllDeleteOrphan().Access.PascalCaseField(Prefix.Underscore).Not.LazyLoad().Fetch.Join();
}

在关系的另一边,我有:

public void Override(AutoMapping<WAsmtDetail> mapping)
{
mapping.References<ItemAsmtDetailDh>(x => x.ItemAsmtDetailDh).Not.Nullable().Not.LazyLoad().Fetch.Join();
}

当我使用 ShowSql 选项时,我发现它仍然为 WAsmtDetails 发出单独的选择语句,这给我带来了可怕的“n + 1 选择”问题。为什么“.Not.LazyLoad().Fetch.Join()”被忽略?

注意:我使用的是 Fluent NHibernate 1.1 版,不是 2.1 版,因为较新版本中存在错误。 (有关错误详细信息,请参阅我对 this question 的回答。)我正在使用 NHibernate 版本 2.1.2.4000。

最佳答案

您很可能以不受映射中的 Fetch.Join() 影响的方式加载数据(例如 HQL 或 Linq)。来自 NHibernate 文档:

The fetch strategy defined in the mapping document affects:

  • retrieval via Get() or Load()
  • retrieval that happens implicitly when an association is navigated
  • ICriteria queries
  • HQL queries if subselect fetching is used

关于nhibernate - Fetch.Join() 在 Fluent NHibernate 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com