2010-07-06 12 views
5

यहाँ समस्या है: संक्षेप में मैं comb.guid पहचान रणनीति का उपयोग करें और मैं सभी सहेजे मार्कर के बाद किया पंक्तियों की जरूरत है ..NHibernate.Linq -> विधि compareTo लागू नहीं है

यहाँ की डमी कोड उदाहरण है क्या मैं पाने के लिए कोशिश कर रहा हूँ:

वापसी session.Linq .Where (पी => 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 रणनीति का उपयोग कर अधिकांश लोगों को प्रभावित कर रहा है?

धन्यवाद, निकोला

उत्तर

0

यहां मुद्दा यह है कि विधि compareTo एक SQL क्वेरी में अनुवाद नहीं किया जा सकता है।

याद रखें कि सभी NHibernate.Linq एक लैम्ब्डा अभिव्यक्ति में परिभाषित भविष्यवाणी से एक SQL चयन कथन का निर्माण कर रहा है, लैम्ब्डा में उपयोग की जाने वाली किसी भी चीज़ को तुलनीय SQL कथन में अनुवाद करने योग्य होना चाहिए।

तो

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

SELECT * FROM Table WHERE Table.Id = 10299 

लिए अनुवाद किया जा सकता लेकिन वहाँ compareTo के लिए कोई SQL आदेश है क्योंकि यह एक .net तरीका है।

संबंधित मुद्दे