NHibernate Linq和DistinctRootEntity
当我执行以下查询时,我得到一个exception,告诉我’feedItemQuery’包含多个项目(因此SingleOrDefault不起作用)。
当使用Criteria api而不使用DistinctRootEntity转换器时,这是预期的行为,但是当使用linq时,我希望得到一个单一的根实体(FeedItem,其属性Ads(of ICollection)包含所有广告)。
有没有办法告诉NHibernate.Linq使用DistinctRootEntity转换器?
我的查询:
var feedItemQuery = from ad in session.Linq().Expand("Ads") where ad.Id == Id select ad; var feedItem = feedItemQuery.SingleOrDefault(); // This fails !?
映射:
...
提前致谢
您可以使用RegisterCustomAction方法设置结果转换器:
var linqsession = session.Linq(); linqsession.QueryOptions.RegisterCustomAction(c => c.SetResultTransformer(new DistinctRootEntityResultTransformer())); var feedItemQuery = from ad in linqsession.Expand("Ads") where ad.Id == Id select ad
var feedItemQuery =来自session.Linq()中的广告。展开(“广告”)
其中ad.Id == Id
选择广告**。FirstOrDefault(); **