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(); **
上述就是C#学习教程:NHibernate Linq和DistinctRootEntity分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1001880.html