[英]System.NotSupportedException: How to simplify the NHibernate Query?
如何在NHibernate中简化以下查询?
以下是在3种不同产品之间找到最大值并按最大值排序的逻辑。
IQueryable<Property> results = ISession.Get<Property>();
results = from r in results
let pdts = new List<decimal?> { r.Prod1.Rate, r.Prod2.Rate, r.Prod3.Rate }
let max = pdts.Max()
orderby max
select r;
在执行它时,NHibernate抛出一个异常System.NotSupportedException
和exceptionMessage。
“ exceptionMessage”:“新列表
1() {Void Add(System.Nullable
1 [System.Decimal])([100001] .Prod1.Rate),无效添加(System.Nullable1[System.Decimal])([100001].Prod2.Rate), Void Add(System.Nullable
1 [System.Decimal])([100001.Prod3.Rate)}“,” exceptionType“:” System.NotSupportedException“,
由于逻辑完美,如何简化此查询?
原因是由于List的初始化,NHibernate无法从您的Linq生成SQL。
尝试这个:
results = from r in results
let max = (r.Prod1.Rate >= r.Prod2.Rate && r.Prod1.Rate >= r.Prod3.Rate) ? r.Prod1.Rate
: (r.Prod2.Rate >= r.Prod1.Rate && r.Prod2.Rate >= r.Prod3.Rate) ? r.Prod2.Rate
: r.Prod3.Rate
orderby max
select r;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.