次のクエリを実行すると、 'feedItemQuery'に複数の項目が含まれているため、例外が発生します(SingleOrDefaultは機能しません)。NHibernate LinqとDistinctRootEntity
これは、DistinctRootEntityトランスフォーマーを使用しないCriteria APIを使用しているときに予想される動作ですが、linqを使用すると、すべての広告を含むAds(ICollectionの)プロパティを持つ単一のルートエンティティ(FeedItem)を取得します。
NHibernate.LinqにDistinctRootEntityトランスフォーマを使用するように指示する方法はありますか?
マイクエリ:
var feedItemQuery = from ad in session.Linq<FeedItem>().Expand("Ads")
where ad.Id == Id
select ad;
var feedItem = feedItemQuery.SingleOrDefault(); // This fails !?
マッピング:事前に
<class name="FeedItem" table="FeedItems" proxy="IFeedItem">
<id name="Id" type="Guid">
<generator class="guid.comb"></generator>
</id>
...
<set name="Ads" table="Ads">
<key column="FeedItemId" />
<one-to-many class="Ad" />
</set>
</class>
おかげ
私はそれについて前に考えなかった、ありがとう! –
古いSession.Linqはもう存在しないので、私たちは今session.Queryを持っていますが、これを指定する方法はありますか?QueryOptionsまたはRegisterCustomActionプロパティ/メソッドはもう見れません –