NHibernate LINQ查询不支持指定方法错误

时间:2012-10-12 15:05:20

标签: c# linq nhibernate lambda

我是NHibernate的新手,在探索它的时候,我遇到了以下查询的麻烦,它给了我一个"不支持指定的方法。"错误,任何想法为什么?

var merchantSite = session.Query<MerchantSite>().FirstOrDefault(x => x.Site.Id == SiteId);
var customers = session.Query<Customer>().Where(x => x.Transaction.Any<Transaction>(y => merchantSite.Transaction.Any<Transaction>(c => c.Id == y.Id))).ToList();

MerchantSite和Transaction都有一个Transaction类型的对象列表。

在那里一定有人遇到类似情况,请与我们分享您的经验,在这种情况下我们该怎么做?

提前致谢!

2 个答案:

答案 0 :(得分:0)

当您执行ToList调用时,就是当nHibernate构建运行查询所必需的SQL时,它基本上说它无法将其转换为单个SQL调用。

答案 1 :(得分:0)

如果x.Site为空,那么您将获得&#34;不支持特定方法。&#34;你可以试着写

FirstOrDefault(x => x.Site != null && x.Site.Id == SiteId);

或使用C#6

FirstOrDefault(x => x.Site?.Id == SiteId);