Thank you Oskar.

I got the 3.3.x branch from github and the query works now, amazing.

But I still find the following queries failing:

http://localhost:4380/UserService.svc/Users()?$filter=tolower(FirstName)%20lt%20'andrew'&$top=10&$inlinecount=allpages
http://localhost:4380/UserService.svc/Users()?$filter=tolower(FirstName)%20le%20'andrew'&$top=10&$inlinecount=allpages
http://localhost:4380/UserService.svc/Users()?$filter=tolower(FirstName)%20gt%20'andrew'&$top=10&$inlinecount=allpages
http://localhost:4380/UserService.svc/Users()?$filter=tolower(FirstName)%20ge%20'andrew'&$top=10&$inlinecount=allpages

gt\lt: 'greater\less than'
ge\le: 'greater\less than or equal'

Here is the stacktrace for the first query:

    <internalexception>
      <message>*Int32 Compare(System.String, System.String)*</message>
      <type>*System.NotSupportedException*</type>
      <stacktrace>   at 
*NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitMethodCallExpression(MethodCallExpression
 
expression) in 
d:\NH\src\NHibernate\Linq\Visitors\HqlGeneratorExpressionTreeVisitor.cs:line 
409&#xD;*
*   at 
NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitExpression(Expression
 
expression) in 
d:\NH\src\NHibernate\Linq\Visitors\HqlGeneratorExpressionTreeVisitor.cs:line 
90&#xD;*
*   at 
NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitBinaryExpression(BinaryExpression
 
expression) in :line 0&#xD;*
*   at 
NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitExpression(Expression
 
expression) in 
d:\NH\src\NHibernate\Linq\Visitors\HqlGeneratorExpressionTreeVisitor.cs:line 
80&#xD;*
*   at 
NHibernate.Linq.Visitors.QueryModelVisitor.VisitWhereClause(WhereClause 
whereClause, QueryModel queryModel, Int32 index) in 
d:\NH\src\NHibernate\Linq\Visitors\QueryModelVisitor.cs:line 219&#xD;*
*   at Remotion.Linq.Clauses.WhereClause.Accept(IQueryModelVisitor visitor, 
QueryModel queryModel, Int32 index) in :line 0&#xD;*
*   at 
Remotion.Linq.QueryModelVisitorBase.VisitBodyClauses(ObservableCollection`1 
bodyClauses, QueryModel queryModel) in :line 0&#xD;*
*   at Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel 
queryModel) in :line 0&#xD;*
*   at 
NHibernate.Linq.Visitors.QueryModelVisitor.GenerateHqlQuery(QueryModel 
queryModel, VisitorParameters parameters, Boolean root) in 
d:\NH\src\NHibernate\Linq\Visitors\QueryModelVisitor.cs:line 60&#xD;*
*   at 
NHibernate.Linq.NhLinqExpression.Translate(ISessionFactoryImplementor 
sessionFactory) in d:\NH\src\NHibernate\Linq\NhLinqExpression.cs:line 
61&#xD;*
*   at 
NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String
 
queryIdentifier, IQueryExpression queryExpression, String collectionRole, 
Boolean shallow, IDictionary`2 filters, ISessionFactoryImplementor factory) 
in d:\NH\src\NHibernate\Hql\Ast\ANTLR\ASTQueryTranslatorFactory.cs:line 
27&#xD;*
*   at 
NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression 
queryExpression, Boolean shallow, IDictionary`2 enabledFilters) in 
d:\NH\src\NHibernate\Engine\Query\QueryPlanCache.cs:line 88&#xD;*
*   at NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(IQueryExpression 
queryExpression, Boolean shallow) in 
d:\NH\src\NHibernate\Impl\AbstractSessionImpl.cs:line 318&#xD;*
*   at NHibernate.Impl.AbstractSessionImpl.CreateQuery(IQueryExpression 
queryExpression) in d:\NH\src\NHibernate\Impl\AbstractSessionImpl.cs:line 
274&#xD;*
*   at NHibernate.Linq.DefaultQueryProvider.PrepareQuery(Expression 
expression, IQuery&amp; query, NhLinqExpression&amp; nhQuery) in 
d:\NH\src\NHibernate\Linq\DefaultQueryProvider.cs:line 69&#xD;*
*   at NHibernate.Linq.DefaultQueryProvider.Execute(Expression expression) 
in d:\NH\src\NHibernate\Linq\DefaultQueryProvider.cs:line 33&#xD;*
*   at NHibernate.Linq.DefaultQueryProvider.Execute[TResult](Expression 
expression) in d:\NH\src\NHibernate\Linq\DefaultQueryProvider.cs:line 
40&#xD;*
*   at System.Linq.Queryable.LongCount[TSource](IQueryable`1 source)&#xD;*
*   at 
System.Data.Services.RequestQueryProcessor.CountQueryResult[TElement](IQueryable`1
 
query)*</stacktrace>
    </internalexception>


On Sunday, January 6, 2013 9:28:22 AM UTC+2, Oskar Berggren wrote:
>
> Fork/download on https://github.com/nhibernate/nhibernate-core. 
> Checkout the 3.3.x branch. Run GaRelease. Look in the build folder. 
>
> There are also binaries available on 
> http://teamcity.codebetter.com/project.html?projectId=project7, but 
> these are from the master branch, which have more changes and requires 
> .Net 4. 
>
> /Oskar 
>
>
> 2013/1/6 Andrewz <[email protected] <javascript:>>: 
> > I mentioned that I am using the NHibernate got from NuGet. 
> > The assembly version is 3.3.1.4000 
> > 
> > Can you please let me know where to test a newer build? 
> > 
> > Thanks. 
> > 
> > On Sunday, January 6, 2013 12:08:06 AM UTC+2, Oskar Berggren wrote: 
> >> 
> >> Sounds like it's covered by one of the WCF-DS related issues fixed for 
> >> the upcoming 3.3.3 release (e.g. NH-3261, but others relate to this 
> >> also). 
> >> 
> >> It would be useful if you could try a build from the 3.3.x branch to 
> >> see if the issue is resolved for you. 
> >> 
> >> /Oskar 
> >> 
> >> 
> >> 2013/1/5 Andrewz <[email protected]>: 
> >> > Any ideas or hints on this issue would be great, 
> >> > 
> >> > Thanks 
> >> > 
> >> > 
> >> > On Saturday, January 5, 2013 9:08:17 PM UTC+2, Andrewz wrote: 
> >> >> 
> >> >> I created a web app in Visual Studio 2010, added NHibernate and 
> >> >> FluentNHibernate by NuGet. 
> >> >> My intention is to test how oData works with latest NHibernate and 
> SQL 
> >> >> Server 2008 R2 
> >> >> It's a simple app with one table, User. 
> >> >> I added like 5,000 users in the User table to have data to query. 
> >> >> 
> >> >> I am doing the following queries which worked OK: 
> >> >> 
> >> >> 
> >> >> 
> http://localhost:4380/UserService.svc/Users()?$top=10&$inlinecount=allpages 
> >> >> 
> >> >> 
> >> >> 
> http://localhost:4380/UserService.svc/Users()?$filter=FirstName%20eq%20'Andrew0'&$top=10&$inlinecount=allpages
>  
> >> >> 
> >> >> My question is why the following query fails: 
> >> >> 
> >> >> 
> >> >> 
> http://localhost:4380/UserService.svc/Users()?$filter=substringof('Andrew',tolower(FirstName))&$orderby=LastName&$top=10&$inlinecount=allpages
>  
>
> >> >> 
> >> >> The exception is the following(see below the stack trace): 
> >> >> Unable to cast object of type 'NHibernate.Hql.Ast.HqlCast' to type 
> >> >> 'NHibernate.Hql.Ast.HqlBooleanExpression'. 
> >> >> 
> >> >> Here are my classes: 
> >> >> 
> >> >> [DataServiceKey("Id")] 
> >> >> [DataServiceEntity] 
> >> >> public class User 
> >> >> { 
> >> >>         public virtual int Id { get; protected set; } 
> >> >>         public virtual string FirstName { get; set; } 
> >> >>         public virtual string LastName { get; set; } 
> >> >> } 
> >> >> 
> >> >>     public class UserMapping : ClassMap<User> 
> >> >>     { 
> >> >>         public UserMapping() 
> >> >>         { 
> >> >>             Id(user => user.Id).GeneratedBy.Identity(); 
> >> >>             Map(user => user.FirstName).Not.Nullable().Length(50); 
> >> >>             Map(user => user.LastName).Not.Nullable().Length(50); 
> >> >>         } 
> >> >>   } 
> >> >> 
> >> >>  public class UserDataContext 
> >> >>     { 
> >> >>         public ISession Session { set; get; } 
> >> >> 
> >> >>         public IQueryable<User> Users 
> >> >>         { 
> >> >>             get 
> >> >>             { 
> >> >>                 return this.Session.Query<User>(); 
> >> >>             } 
> >> >>         } 
> >> >>     } 
> >> >> 
> >> >>  [ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
> >> >>     public class UserService : DataService<UserDataContext>, 
> >> >> IDisposable 
> >> >>     { 
> >> >>         ISession session; 
> >> >> 
> >> >>         public static void 
> InitializeService(DataServiceConfiguration 
> >> >> config) 
> >> >>         { 
> >> >>             config.SetEntitySetAccessRule("*", EntitySetRights.All); 
> >> >>             config.DataServiceBehavior.MaxProtocolVersion = 
> >> >> DataServiceProtocolVersion.V2; 
> >> >>             config.UseVerboseErrors = true; 
> >> >>         } 
> >> >> 
> >> >>         protected override UserDataContext CreateDataSource() 
> >> >>         { 
> >> >>             var sessionFactory = new HibernateSessionFactory(); 
> >> >>             this.session = sessionFactory.OpenSession(); 
> >> >>             return new UserDataContext() 
> >> >>             { 
> >> >>                 Session = this.session 
> >> >>             }; 
> >> >>         } 
> >> >> 
> >> >>         public void Dispose() 
> >> >>         { 
> >> >>             this.session.Dispose(); 
> >> >>             this.session = null; 
> >> >>         } 
> >> >>     } 
> >> >> 
> >> >> 
> >> >> Here is the web response I see in Fiddler: 
> >> >> 
> >> >> <?xml version="1.0" encoding="utf-8" standalone="yes"?> 
> >> >> <error 
> >> >> xmlns="
> http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";> 
> >> >>   <code></code> 
> >> >>   <message xml:lang="en-US">An error occurred while processing this 
> >> >> request.</message> 
> >> >>   <innererror> 
> >> >>     <message>Exception has been thrown by the target of an 
> >> >> invocation.</message> 
> >> >>     <type>System.Reflection.TargetInvocationException</type> 
> >> >>     <stacktrace>   at 
> >> >> System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo 
> method, 
> >> >> Object target, Object[] arguments, SignatureStruct&amp; sig, 
> >> >> MethodAttributes methodAttributes, RuntimeType typeOwner)&#xD; 
> >> >>    at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo 
> >> >> method, Object target, Object[] arguments, Signature sig, 
> >> >> MethodAttributes 
> >> >> methodAttributes, RuntimeType typeOwner)&#xD; 
> >> >>    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, 
> >> >> BindingFlags 
> >> >> invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, 
> >> >> Boolean 
> >> >> skipVisibilityChecks)&#xD; 
> >> >>    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, 
> >> >> BindingFlags 
> >> >> invokeAttr, Binder binder, Object[] parameters, CultureInfo 
> >> >> culture)&#xD; 
> >> >>    at System.Reflection.MethodBase.Invoke(Object obj, Object[] 
> >> >> parameters)&#xD; 
> >> >>    at System.Data.Services.RequestQueryProcessor.ProcessCount()&#xD; 
> >> >>    at System.Data.Services.RequestQueryProcessor.ProcessQuery()&#xD; 
> >> >>    at 
> >> >> System.Data.Services.RequestQueryProcessor.ProcessQuery(IDataService 
> >> >> service, RequestDescription description)&#xD; 
> >> >>    at System.Data.Services.RequestUriProcessor.ProcessRequestUri(Uri 
> >> >> absoluteRequestUri, IDataService service)&#xD; 
> >> >>    at 
> >> >> System.Data.Services.DataService`1.ProcessIncomingRequestUri()&#xD; 
> >> >>    at 
> System.Data.Services.DataService`1.HandleRequest()</stacktrace> 
> >> >>     <internalexception> 
> >> >>       <message>Unable to cast object of type 
> >> >> 'NHibernate.Hql.Ast.HqlCast' 
> >> >> to type 'NHibernate.Hql.Ast.HqlBooleanExpression'.</message> 
> >> >>       <type>System.InvalidCastException</type> 
> >> >>       <stacktrace>   at 
> >> >> 
> >> >> 
> NHibernate.Hql.Ast.HqlTreeNodeExtensions.AsBooleanExpression(HqlTreeNode 
> >> >> node)&#xD; 
> >> >>    at 
> >> >> 
> NHibernate.Linq.Visitors.QueryModelVisitor.VisitWhereClause(WhereClause 
> >> >> whereClause, QueryModel queryModel, Int32 index)&#xD; 
> >> >>    at Remotion.Linq.Clauses.WhereClause.Accept(IQueryModelVisitor 
> >> >> visitor, 
> >> >> QueryModel queryModel, Int32 index)&#xD; 
> >> >>    at 
> >> >> 
> >> >> 
> Remotion.Linq.QueryModelVisitorBase.VisitBodyClauses(ObservableCollection`1 
> >> >> bodyClauses, QueryModel queryModel)&#xD; 
> >> >>    at Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel 
> >> >> queryModel)&#xD; 
> >> >>    at 
> >> >> 
> NHibernate.Linq.Visitors.QueryModelVisitor.GenerateHqlQuery(QueryModel 
> >> >> queryModel, VisitorParameters parameters, Boolean root)&#xD; 
> >> >>    at 
> >> >> 
> NHibernate.Linq.NhLinqExpression.Translate(ISessionFactoryImplementor 
> >> >> sessionFactory)&#xD; 
> >> >>    at 
> >> >> 
> >> >> 
> NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String
>  
>
> >> >> queryIdentifier, IQueryExpression queryExpression, String 
> >> >> collectionRole, 
> >> >> Boolean shallow, IDictionary`2 filters, ISessionFactoryImplementor 
> >> >> factory)&#xD; 
> >> >>    at 
> >> >> 
> NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression 
> >> >> queryExpression, Boolean shallow, IDictionary`2 enabledFilters)&#xD; 
> >> >>    at 
> >> >> NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(IQueryExpression 
> >> >> queryExpression, Boolean shallow)&#xD; 
> >> >>    at 
> NHibernate.Impl.AbstractSessionImpl.CreateQuery(IQueryExpression 
> >> >> queryExpression)&#xD; 
> >> >>    at NHibernate.Linq.DefaultQueryProvider.PrepareQuery(Expression 
> >> >> expression, IQuery&amp; query, NhLinqExpression&amp; nhQuery)&#xD; 
> >> >>    at NHibernate.Linq.DefaultQueryProvider.Execute(Expression 
> >> >> expression)&#xD; 
> >> >>    at 
> NHibernate.Linq.DefaultQueryProvider.Execute[TResult](Expression 
> >> >> expression)&#xD; 
> >> >>    at System.Linq.Queryable.LongCount[TSource](IQueryable`1 
> >> >> source)&#xD; 
> >> >>    at 
> >> >> 
> >> >> 
> System.Data.Services.RequestQueryProcessor.CountQueryResult[TElement](IQueryable`1
>  
>
> >> >> query)</stacktrace> 
> >> >>     </internalexception> 
> >> >>   </innererror> 
> >> >> </error> 
> >> > 
> >> > -- 
> >> > You received this message because you are subscribed to the Google 
> >> > Groups 
> >> > "nhusers" group. 
> >> > To view this discussion on the web visit 
> >> > https://groups.google.com/d/msg/nhusers/-/_B79zDbcu1MJ. 
> >> > 
> >> > To post to this group, send email to [email protected]. 
> >> > To unsubscribe from this group, send email to 
> >> > [email protected]. 
> >> > For more options, visit this group at 
> >> > http://groups.google.com/group/nhusers?hl=en. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "nhusers" group. 
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msg/nhusers/-/Gpp7lCadQf0J. 
> > 
> > To post to this group, send email to [email protected]<javascript:>. 
>
> > To unsubscribe from this group, send email to 
> > [email protected] <javascript:>. 
> > For more options, visit this group at 
> > http://groups.google.com/group/nhusers?hl=en. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/nhusers/-/zGXnkzj2WogJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to