次のnhibernateクエリは、子テーブルが指定された条件に一致する複数の行を持つので、同じ行を1回返します。私が知りたいと思うのは、この同じクエリを実行するだけでDataMappingBaseの各行を一度取得するだけで、nhibernateで最も効率的な/ベストプラクティスです。同じ行の複数を返すことは、私が25を制限しようとするときに返される結果の数に違反しますが、時には同じ行を25回取得することがあります。私は現在、デタッチクエリに上記のクエリを変換すると「取る」条項を削除し、ちょうど一致する行のIDを返すと、それから、サブクエリの選択に使用される必要があり、それを得ることで探しています同じ行を2回以上返すNHibernateマルチテーブルクエリ
MappedID id = null;
DataMappingBase mapBase = null;
NameDetails name = null;
dmbs = mappingSession.QueryOver<DataMappingBase>(() => mapBase)
.JoinAlias(() => mapBase.IDs,() => id).WhereRestrictionOn(() => id.SecondaryDataIDType).IsNull()
.JoinAlias(() => mapBase.Names,() => name).WhereRestrictionOn(() => name.Name).IsInsensitiveLike(request.Filter, MatchMode.Anywhere)
.Take(request.MaxResults)
.List();
"DataMappingBase"行IDがサブクエリによって返されたIDにありますが、それが最良の方法であるかどうかわかりません。
あなたがISessionやIStatelessSessionを使用していますか? – Danielg
@Danielg ISession – Seer