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策略?
谢谢,尼古拉
这里的问题是 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 方法。
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |