2010-07-06 31 views
5

Dưới đây là các vấn đề: trong ngắn hạn tôi sử dụng chiến lược sắc comb.guid và tôi cần tất cả các hàng thực hiện sau khi các điểm đánh dấu lưu ..NHibernate.Linq -> Phương pháp CompareTo không được thực hiện

Dưới đây là hình nộm mã ví dụ về những gì tôi cố gắng để có được:

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

này ném một ngoại lệ nói rằng CompareTo không thực hiện ...

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: 

Như bạn có thể nhìn thấy từ chồng tôi đã thử các phiên bản 2.1 từ hornget trunk mà không cần bất kỳ sự giúp đỡ

Bất kỳ gợi ý/đầu mối những gì tôi phải làm để đi xung quanh giới hạn này mà tôi đoán là ảnh hưởng đến hầu hết mọi người sử dụng chiến lược comb.guid?

Cảm ơn, Nikola

Trả lời

0

Vấn đề ở đây là phương pháp CompareTo không thể được dịch sang một truy vấn SQL. Hãy nhớ rằng tất cả NHibernate.Linq đang làm là xây dựng một câu lệnh SQL Select từ biến vị ngữ được định nghĩa trong một biểu thức lambda, bất cứ điều gì được sử dụng trong lambda phải được chuyển thành câu lệnh SQL có thể so sánh được.

nên

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

có thể được dịch sang

SELECT * FROM Table WHERE Table.Id = 10299 

tuy nhiên không có lệnh SQL cho CompareTo vì đây là một phương pháp .net.

Các vấn đề liên quan