当我执行以下查询时,我收到一个异常,告诉我“feedItemQuery”包含多个项目(因此 SingleOrDefault 不起作用)。
这是使用没有 DistinctRootEntity 转换器的 Criteria api 时的预期行为,但是在使用 linq 时,我希望获得一个根实体(FeedItem,其属性 Ads(ICollection 的)包含所有广告)。
有没有办法告诉 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>
提前致谢