我尝试使用无状态会话执行以下查询。
var products = session.Query<Product>().Timeout(5 * 60)
.GroupBy(p => p.ProductType)
.Select(p => new {ProductType = e.Key, Count = e.LongCount()}).ToList();
它导致NotSupportedException,但以下代码可以正常工作
var products = session.Query<Product>().Timeout(5 * 60)
.Where(p => true)
.GroupBy(p => p.ProductType)
.Select(p => new {ProductType = e.Key, Count = e.LongCount()}).ToList();
var products = session.Query<Product>()
.GroupBy(p => p.ProductType)
.Select(p => new {ProductType = e.Key, Count = e.LongCount()}).Timeout(5 * 60).ToList();
如果我添加Timeout(),为什么我需要Where()?如果Timeout()是最后一个,为什么它可以工作?
答案 0 :(得分:0)
我对nHibernate并不熟悉,但我认为Timeout()
方法返回的类型对象无法通过GroupBy()
扩展方法进行扩展。所以你可以尝试显式演员:
var products = (IEnumerable<Product>)(session.Query<Product>().Timeout(5 * 60))
.GroupBy(p => p.ProductType)
.Select(p => new {ProductType = e.Key, Count = e.LongCount()}).ToList();