如何让Fluent NHibernate映射出hasMany的两个级别

时间:2013-09-12 14:07:09

标签: nhibernate fluent-nhibernate

乐队没有,一个或几个成员 会员没有,一个或几个工具

QueryOver<Band>()
.WithSubquery.WhereProperty(x => x.BandId).In(bandIds)
.Left.JoinQueryOver<Member>(x => x.Members)
.Left.JoinQueryOver<Instrument>(x => x.Instruments)
.TransformUsing(Transformers.DistinctRootEntity)
.List();

以上几乎可行。问题是,如果有多个仪器我们也会得到那么多成员(笛卡尔积)。

示例

Band - 1, gets 1
  Member - 1, gets 2
    Instrument - 2, gets 2

急切地提取映射,我们希望避免N + 1问题。

HasMany(x => x.Members).KeyColumn("BandId").Fetch.Join().Inverse();

有没有办法让NHibernate来处理这个问题?

0 个答案:

没有答案