我是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类型的对象列表。
在那里一定有人遇到类似情况,请与我们分享您的经验,在这种情况下我们该怎么做?
提前致谢!
答案 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);