gpt4 book ai didi

linq-to-nhibernate - NHibernate.Linq -> 方法 CompareTo 没有实现

转载 作者:行者123 更新时间:2023-12-03 17:59:55 25 4
gpt4 key购买 nike

问题是:简而言之,我使用了 comb.guid 标识策略,并且我需要在保存的标记之后创建的所有行。

这是我想要获得的虚拟代码示例:

return session.Linq .Where(p => p.Id.CompareTo(lastSyncedEntityIdentity) == 1 ) .ToList();



这会引发一个异常,说明未实现 CompareTo...
System.NotImplementedException occurred
Message=The method CompareTo is not implemented.
Source=NHibernate.Linq
StackTrace:
at NHibernate.Linq.Visitors.RootVisitor.VisitMethodCall(MethodCallExpression expr) in e:\horn\.horn\orm\nhcontrib\nhibernate.linq\Working-2.1\src\NHibernate.Linq\Visitors\RootVisitor.cs:line 97
InnerException:

正如您从堆栈中看到的,我尝试了 hornget trunk 中的 2.1 版本没有任何帮助

为了绕过这个限制,我认为这会影响大多数使用 comb.guid 策略的人,我必须做些什么提示/线索?

谢谢,
尼古拉

最佳答案

这里的问题是无法将方法 CompareTo 转换为 SQL 查询。

请记住,NHibernate.Linq 所做的一切都是从 lambda 表达式中定义的谓词构建 SQL Select 语句,lambda 中使用的任何内容都必须可转换为可比较的 SQL 语句。

所以

session.Linq.Where(p => p.Id == 10299);

可以翻译成
SELECT * FROM Table WHERE Table.Id = 10299

但是,CompareTo 没有 SQL 命令,因为这是一种 .net 方法。

关于linq-to-nhibernate - NHibernate.Linq -> 方法 CompareTo 没有实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188923/

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