Csharp/C#教程:NHibernate Linq和DistinctRootEntity分享


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

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐