gpt4 book ai didi

c# - Nhibernate 3 Linq 抛出 Antlr.Runtime.NoViableAltException

转载 作者:行者123 更新时间:2023-11-30 22:39:34 28 4
gpt4 key购买 nike

使用 NHibernate 3 linq 提供程序,我想选择一个项目子项的最大数量。

使用以下 linq 查询,我得到一个 Antlr.Runtime.NoViableAltException,后跟一个 Antlr.Runtime.MismatchedTreeNodeException

int maxCount = _repository.FindAll<Device>().Max(d=>d.DeviceSensors.Count());

存储库函数 FindAll() 返回 session.Query。

异常详情:

Antlr.Runtime.NoViableAltException occurred
Message="Exception of type 'Antlr.Runtime.NoViableAltException' was thrown."
Source="NHibernate"
Char=0
CharPositionInLine=-1
Index=21
Line=0
UnexpectedType=84
StackTrace:
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.aggregateExpr() in d:\CSharp\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\Generated\HqlSqlWalker.cs:line 3203
InnerException:

.

Antlr.Runtime.MismatchedTreeNodeException occurred
Message="Exception of type 'Antlr.Runtime.MismatchedTreeNodeException' was thrown."
Source="Antlr3.Runtime"
Char=0
CharPositionInLine=-1
Index=21
Line=0
UnexpectedType=84
StackTrace:
at Antlr.Runtime.Tree.TreeParser.RecoverFromMismatchedToken(IIntStream input, Int32 ttype, BitSet follow)
at Antlr.Runtime.BaseRecognizer.Match(IIntStream input, Int32 ttype, BitSet follow)
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.functionCall() in d:\CSharp\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\Generated\HqlSqlWalker.cs:line 7906
InnerException:

 NHibernate.Hql.Ast.ANTLR.QuerySyntaxException: Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. [.First(.Select(.OrderByDescending(NHibernate.Linq.NhQueryable`1[RGB.TTT.Domain.Device], Quote((x, ) => (x.DeviceSensors.Count)), ), Quote((x, ) => (new <>f__AnonymousType2`1(x.DeviceSensors.Count, ))), ), )]

这是一个已知问题吗?或者我是否必须重写查询,欢迎提出任何建议。

最佳答案

显然,当前的 NHibernate Linq 提供程序无法在 Select 子句中组合 Max() 和内部 Select。您可能需要将 Max 从查询中拉出并在之后应用它,例如

int maxCount = session.Query<Device>()
.Select(d => d.DeviceSensors.Count)
.ToList()
.Max();

没有子选择的更简单版本:

int maxCount = session.Query<Device>()
.Select(d => d.Name.Length)
.Max();

关于c# - Nhibernate 3 Linq 抛出 Antlr.Runtime.NoViableAltException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com