Fetch.Join()不工作在Fluent NHibernate

前端之家收集整理的这篇文章主要介绍了Fetch.Join()不工作在Fluent NHibernate前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在关系的一边有以下映射覆盖:
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发出单独的select语句,给我可怕的“n 1选择”问题.为什么“.Not.LazyLoad().Fetch.Join()”被忽略?

注意:我使用Fluent NHibernate版本1.1,而不是版本2.1,因为较新版本的错误. (查看我的答案this question错误详细信息.)我使用NHibernate版本2.1.2.4000.

解决方法

您最有可能以映射(如HQL或Linq)中的Fetch.Join()不受影响的方式加载数据.从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

猜你在找的MsSQL相关文章