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

Nik*_*vic 5 linq-to-nhibernate

这是问题所在:简而言之,我使用了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: 
Run Code Online (Sandbox Code Playgroud)

正如你从堆栈中看到的那样,我在没有任何帮助的情况下尝试了来自hornget trunk的2.1版本

任何提示/线索我必须做​​什么才能绕过这个限制,我想这会影响大多数人使用comb.guid策略?

谢谢,尼古拉

Tre*_*ley 0

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

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

所以

session.Linq.Where(p => p.Id == 10299);
Run Code Online (Sandbox Code Playgroud)

可以翻译成

SELECT * FROM Table WHERE Table.Id = 10299
Run Code Online (Sandbox Code Playgroud)

但是,没有用于 CompareTo 的 SQL 命令,因为这是一个 .net 方法。